diff --git a/arch/arm/src/armv8-m/arm_securefault.c b/arch/arm/src/armv8-m/arm_securefault.c index 9894f6a878bf2..fb5b096ffb46d 100644 --- a/arch/arm/src/armv8-m/arm_securefault.c +++ b/arch/arm/src/armv8-m/arm_securefault.c @@ -81,6 +81,19 @@ static void generate_nonsecure_busfault(void) * Public Functions ****************************************************************************/ +/**************************************************************************** + * Name: arm_securefault_should_generate + * + * Description: + * Check whether should generate non-secure IRQ from securefault + * + ****************************************************************************/ + +bool weak_function arm_should_generate_nonsecure_busfault(void) +{ + return true; +} + /**************************************************************************** * Name: arm_securefault * @@ -145,11 +158,15 @@ int arm_securefault(int irq, FAR void *context, FAR void *arg) putreg32(0xff, SAU_SFSR); #ifdef CONFIG_DEBUG_SECUREFAULT - generate_nonsecure_busfault(); -#else + if (arm_should_generate_nonsecure_busfault()) + { + generate_nonsecure_busfault(); + return OK; + } +#endif + up_irq_save(); PANIC(); -#endif return OK; }