sparc: Simplify trap table initialization

Move _ISR_Handler() to a separate file since it is now only used if a handler
is installed by _CPU_ISR_install_raw_handler().

Statically initialize the traps for external interrupts to use the new
_SPARC_Interrupt_trap() which directly dispatches the interrupt handlers
installed by rtems_interrupt_handler_install() via the BSP-provided
_SPARC_Interrupt_dispatch().

Since the trap table is now fully statically initialized, there is no longer a
dependency on the Cache Manager in the default configuration.

Update #4458.
This commit is contained in:
Sebastian Huber
2021-06-18 16:44:11 +02:00
parent 005c79beb9
commit be96cb4345
15 changed files with 705 additions and 171 deletions

View File

@@ -32,6 +32,13 @@
TRAP_SYM(_vector):; \
TRAP(_vector, _SPARC_Bad_trap)
/*
* External interrupt trap
*/
#define ISR_TRAP(_vector) \
TRAP_SYM(_vector):; \
TRAP(_vector - 0x10, _SPARC_Interrupt_trap)
/*
* System call optimized trap table entry
*/
@@ -128,27 +135,27 @@ TRAP_SYM(0x06):
BAD_TRAP(0x0d) ! 0D undefined
BAD_TRAP(0x0e) ! 0E undefined
BAD_TRAP(0x0f) ! 0F undefined
BAD_TRAP(0x10) ! 10 undefined
/*
* External interrupt traps
*/
BAD_TRAP(0x11) ! 11 external interrupt 1
BAD_TRAP(0x12) ! 12 external interrupt 2
BAD_TRAP(0x13) ! 13 external interrupt 3
BAD_TRAP(0x14) ! 14 external interrupt 4
BAD_TRAP(0x15) ! 15 external interrupt 5
BAD_TRAP(0x16) ! 16 external interrupt 6
BAD_TRAP(0x17) ! 17 external interrupt 7
BAD_TRAP(0x18) ! 18 external interrupt 8
BAD_TRAP(0x19) ! 19 external interrupt 9
BAD_TRAP(0x1a) ! 1A external interrupt 10
BAD_TRAP(0x1b) ! 1B external interrupt 11
BAD_TRAP(0x1c) ! 1C external interrupt 12
BAD_TRAP(0x1d) ! 1D external interrupt 13
BAD_TRAP(0x1e) ! 1E external interrupt 14
BAD_TRAP(0x1f) ! 1F external interrupt 15
ISR_TRAP(0x10) ! 10 undefined
ISR_TRAP(0x11) ! 11 external interrupt 1
ISR_TRAP(0x12) ! 12 external interrupt 2
ISR_TRAP(0x13) ! 13 external interrupt 3
ISR_TRAP(0x14) ! 14 external interrupt 4
ISR_TRAP(0x15) ! 15 external interrupt 5
ISR_TRAP(0x16) ! 16 external interrupt 6
ISR_TRAP(0x17) ! 17 external interrupt 7
ISR_TRAP(0x18) ! 18 external interrupt 8
ISR_TRAP(0x19) ! 19 external interrupt 9
ISR_TRAP(0x1a) ! 1A external interrupt 10
ISR_TRAP(0x1b) ! 1B external interrupt 11
ISR_TRAP(0x1c) ! 1C external interrupt 12
ISR_TRAP(0x1d) ! 1D external interrupt 13
ISR_TRAP(0x1e) ! 1E external interrupt 14
ISR_TRAP(0x1f) ! 1F external interrupt 15
BAD_TRAP(0x20) ! 20 undefined
BAD_TRAP(0x21) ! 21 undefined