xtensa: cleanup fatal error handling
1) Fatal errors now all go through _SysFatalErrorHandler. When the simulator is used, only the death of 'essential' threads will result in the simulator exiting; some test cases that test exceptions may actually expect a thread to terminate abnormally. 2) The human readability of the exception errors is improved. Change-Id: I77f57ea0eae15b0c55237681b959cd21e3fe8c1c Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
parent
ceebd823e7
commit
9249f876a9
2 changed files with 182 additions and 56 deletions
|
@ -33,6 +33,7 @@ extern "C" {
|
|||
#define _NANO_ERR_INVALID_TASK_EXIT (1) /* Invalid task exit */
|
||||
#define _NANO_ERR_STACK_CHK_FAIL (2) /* Stack corruption detected */
|
||||
#define _NANO_ERR_ALLOCATION_FAIL (3) /* Kernel Allocation Failure */
|
||||
#define _NANO_ERR_RESERVED_IRQ (4) /* Reserved interrupt */
|
||||
|
||||
/* Xtensa GPRs are often designated by two different names */
|
||||
#define sys_define_gpr_with_alias(name1, name2) union { uint32_t name1, name2; }
|
||||
|
@ -120,6 +121,11 @@ extern void _irq_priority_set(uint32_t irq, uint32_t prio, uint32_t flags);
|
|||
_irq_priority_set(irq_p, priority_p, flags_p); \
|
||||
irq_p; \
|
||||
})
|
||||
|
||||
|
||||
FUNC_NORETURN void _SysFatalErrorHandler(unsigned int reason,
|
||||
const NANO_ESF *esf);
|
||||
|
||||
#endif /* !defined(_ASMLANGUAGE) && !defined(__ASSEMBLER__) */
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue