sparc: More reliable bad trap handling

Statically initialize the trap table in start.S to jump to _SPARC_Bad_trap()
for all unexpected traps.  This enables a proper RTEMS fatal error handling
right from the start.  Do not rely on the stack and register settings which
caused an unexpected trap.  Use the ISR stack of the processor to do the fatal
error handling.  Save the full context which caused the trap.  Fatal error
handler may use it for error logging.

Unify the _CPU_Exception_frame_print() implementations and move it to cpukit.

Update #4459.
This commit is contained in:
Sebastian Huber
2021-06-21 11:24:27 +02:00
parent 955c045b3c
commit d73e657e06
23 changed files with 519 additions and 585 deletions

View File

@@ -65,7 +65,6 @@ source:
- bsps/sparc/erc32/start/bspstart.c
- bsps/sparc/erc32/start/erc32mec.c
- bsps/sparc/erc32/start/setvec.c
- bsps/sparc/erc32/start/spurious.c
- bsps/sparc/shared/gnatcommon.c
- bsps/sparc/shared/irq/bsp_isr_handler.c
- bsps/sparc/shared/irq/irq-shared.c

View File

@@ -41,7 +41,6 @@ source:
- bsps/sparc/leon2/start/bspstart.c
- bsps/sparc/leon2/start/cache.c
- bsps/sparc/leon2/start/setvec.c
- bsps/sparc/leon2/start/spurious.c
- bsps/sparc/shared/drvmgr/ambapp_bus_leon2.c
- bsps/sparc/shared/drvmgr/leon2_amba_bus.c
- bsps/sparc/shared/gnatcommon.c

View File

@@ -51,7 +51,6 @@ source:
- bsps/sparc/leon3/start/drvmgr_def_drivers.c
- bsps/sparc/leon3/start/eirq.c
- bsps/sparc/leon3/start/setvec.c
- bsps/sparc/leon3/start/spurious.c
- bsps/sparc/shared/gnatcommon.c
- bsps/sparc/shared/irq/bsp_isr_handler.c
- bsps/sparc/shared/irq/irq-shared.c

View File

@@ -34,9 +34,11 @@ source:
- cpukit/score/cpu/sparc/cpu.c
- cpukit/score/cpu/sparc/cpu_asm.S
- cpukit/score/cpu/sparc/sparc-access.S
- cpukit/score/cpu/sparc/sparc-bad-trap.S
- cpukit/score/cpu/sparc/sparc-context-validate.S
- cpukit/score/cpu/sparc/sparc-context-volatile-clobber.S
- cpukit/score/cpu/sparc/sparc-counter-asm.S
- cpukit/score/cpu/sparc/sparc-exception-frame-print.c
- cpukit/score/cpu/sparc/sparc-isr-install.c
- cpukit/score/cpu/sparc/syscall.S
- cpukit/score/cpu/sparc/window.S