diff --git a/arch/arm/src/armv7-a/arm_assert.c b/arch/arm/src/armv7-a/arm_assert.c index c6742d2a6a5..72952e0cfaa 100644 --- a/arch/arm/src/armv7-a/arm_assert.c +++ b/arch/arm/src/armv7-a/arm_assert.c @@ -346,14 +346,21 @@ static void _up_assert(int errorcode) if (CURRENT_REGS || this_task()->pid == 0) { + /* Disable interrupts on this CPU */ + (void)up_irq_save(); -#ifdef SMP - (void)spin_trylock(&g_cpu_irqlock); -#endif for (; ; ) { +#ifdef CONFIG_SMP + /* Try (again) to stop activity on other CPUs */ + + (void)spin_trylock(&g_cpu_irqlock); +#endif + #ifdef CONFIG_ARCH_LEDS + /* FLASH LEDs a 2Hz */ + board_autoled_on(LED_PANIC); up_mdelay(250); board_autoled_off(LED_PANIC); diff --git a/arch/arm/src/common/up_exit.c b/arch/arm/src/common/up_exit.c index ec5a88498be..50ff85a743b 100644 --- a/arch/arm/src/common/up_exit.c +++ b/arch/arm/src/common/up_exit.c @@ -146,7 +146,7 @@ void _exit(int status) */ (void)up_irq_save(); -#ifdef SMP +#ifdef CONFIG_SMP (void)spin_trylock(&g_cpu_irqlock); #endif