diff --git a/arch/xtensa/core/fatal.c b/arch/xtensa/core/fatal.c index ab19ae31fab..849b446ffa7 100644 --- a/arch/xtensa/core/fatal.c +++ b/arch/xtensa/core/fatal.c @@ -44,8 +44,8 @@ const NANO_ESF _default_esf = { * * @return This function does not return. */ -FUNC_NORETURN void _NanoFatalErrorHandler(unsigned int reason, - const NANO_ESF *pEsf) +XTENSA_ERR_NORET void _NanoFatalErrorHandler(unsigned int reason, + const NANO_ESF *pEsf) { switch (reason) { case _NANO_ERR_HW_EXCEPTION: @@ -179,14 +179,14 @@ static void dump_exc_state(void) } -FUNC_NORETURN void FatalErrorHandler(void) +XTENSA_ERR_NORET void FatalErrorHandler(void) { printk("*** Unhandled exception ****\n"); dump_exc_state(); _NanoFatalErrorHandler(_NANO_ERR_HW_EXCEPTION, &_default_esf); } -FUNC_NORETURN void ReservedInterruptHandler(unsigned int intNo) +XTENSA_ERR_NORET void ReservedInterruptHandler(unsigned int intNo) { printk("*** Reserved Interrupt ***\n"); dump_exc_state(); @@ -232,8 +232,8 @@ void exit(int return_code) * * @return N/A */ -FUNC_NORETURN __weak void _SysFatalErrorHandler(unsigned int reason, - const NANO_ESF *pEsf) +XTENSA_ERR_NORET __weak void _SysFatalErrorHandler(unsigned int reason, + const NANO_ESF *pEsf) { ARG_UNUSED(pEsf); diff --git a/include/arch/xtensa/arch.h b/include/arch/xtensa/arch.h index 4f93d582118..84704c7983b 100644 --- a/include/arch/xtensa/arch.h +++ b/include/arch/xtensa/arch.h @@ -120,11 +120,17 @@ extern void _irq_priority_set(u32_t irq, u32_t prio, u32_t flags); /* Spurious interrupt handler. Throws an error if called */ extern void _irq_spurious(void *unused); -FUNC_NORETURN void _SysFatalErrorHandler(unsigned int reason, - const NANO_ESF *esf); +#ifdef CONFIG_XTENSA_ASM2 +#define XTENSA_ERR_NORET /**/ +#else +#define XTENSA_ERR_NORET FUNC_NORETURN +#endif -FUNC_NORETURN void _NanoFatalErrorHandler(unsigned int reason, - const NANO_ESF *pEsf); +XTENSA_ERR_NORET void _SysFatalErrorHandler(unsigned int reason, + const NANO_ESF *esf); + +XTENSA_ERR_NORET void _NanoFatalErrorHandler(unsigned int reason, + const NANO_ESF *pEsf); extern u32_t _timer_cycle_get_32(void); #define _arch_k_cycle_get_32() _timer_cycle_get_32()