#4458 closed enhancement (fixed)
Simplify trap table initialization
Reported by: | Sebastian Huber | Owned by: | Sebastian Huber |
---|---|---|---|
Priority: | normal | Milestone: | 6.1 |
Component: | arch/sparc | Version: | 6 |
Severity: | normal | Keywords: | qualification |
Cc: | Blocked By: | ||
Blocking: |
Description (last modified by Sebastian Huber)
Currently, the trap table is statically initialized (see start.S). Unexpected traps end up in system error mode. Later during startup most traps are changed to jump to _ISR_Handler(). This is a side-effect of bsp_spurious_initialize(). The used functions for this dynamic initialization are a bit complex and need cache manager directives which involve all online processors. This should be simplified to cover only basic requirements.
- The _ISR_Vector_table should be initialized by _CPU_Initialize_vectors() to an new default handler _SPARC_ISR_handler_default() which just invokes _Terminate().
- The traps associated with external interrupts (0x11 up to including 0x1f) should be statically initialized in start.S to jump to _ISR_Handler().
- Standard synchronous exceptions such as
- 0x01 instruction access exception
- 0x02 illegal instruction
- 0x03 privileged instruction
- 0x04 fp disabled
- 0x07 memory address not aligned
- 0x08 fp exception
- 0x09 data access exception
- 0x0A tag overflow
- 0x24 cp_disabled
- 0x28 cp_exception
should also be statically initialize to jump to _ISR_Handler() to invoke the fatal error handler.
If software needs to change the default initialization, then it can use set_vector() or alternatives on demand.
Change History (9)
comment:1 Changed on 06/18/21 at 15:20:54 by Sebastian Huber
Description: | modified (diff) |
---|
comment:2 Changed on 06/18/21 at 15:22:45 by Sebastian Huber
Description: | modified (diff) |
---|
comment:3 Changed on 06/24/21 at 10:30:27 by Sebastian Huber <sebastian.huber@…>
comment:8 Changed on 08/12/21 at 12:49:04 by Sebastian Huber
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
The trap table is now statically initialized.
In 7a140e2/rtems: