diff options
Diffstat (limited to 'apps/debug_menu.c')
-rw-r--r-- | apps/debug_menu.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c index eec0dc3c61..691bbf9cd9 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c | |||
@@ -409,9 +409,11 @@ static bool dbg_flash_id(unsigned* p_manufacturer, unsigned* p_device, | |||
409 | static int perfcheck(void) | 409 | static int perfcheck(void) |
410 | { | 410 | { |
411 | int result; | 411 | int result; |
412 | int old_level = set_irq_level(HIGHEST_IRQ_LEVEL); | ||
413 | 412 | ||
414 | asm ( | 413 | asm ( |
414 | "mrs r2, CPSR \n" | ||
415 | "orr r0, r2, #0xc0 \n" /* disable IRQ and FIQ */ | ||
416 | "msr CPSR_c, r0 \n" | ||
415 | "mov %[res], #0 \n" | 417 | "mov %[res], #0 \n" |
416 | "ldr r0, [%[timr]] \n" | 418 | "ldr r0, [%[timr]] \n" |
417 | "add r0, r0, %[tmo] \n" | 419 | "add r0, r0, %[tmo] \n" |
@@ -420,15 +422,15 @@ static int perfcheck(void) | |||
420 | "ldr r1, [%[timr]] \n" | 422 | "ldr r1, [%[timr]] \n" |
421 | "cmp r1, r0 \n" | 423 | "cmp r1, r0 \n" |
422 | "bmi 1b \n" | 424 | "bmi 1b \n" |
425 | "msr CPSR_c, r2 \n" /* reset IRQ and FIQ state */ | ||
423 | : | 426 | : |
424 | [res]"=&r"(result) | 427 | [res]"=&r"(result) |
425 | : | 428 | : |
426 | [timr]"r"(&USEC_TIMER), | 429 | [timr]"r"(&USEC_TIMER), |
427 | [tmo]"r"(10226) | 430 | [tmo]"r"(10226) |
428 | : | 431 | : |
429 | "r0", "r1" | 432 | "r0", "r1", "r2" |
430 | ); | 433 | ); |
431 | set_irq_level(old_level); | ||
432 | return result; | 434 | return result; |
433 | } | 435 | } |
434 | #endif | 436 | #endif |