From be96cb4345554fac614b252fe8f78dbf32c3a981 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 18 Jun 2021 16:44:11 +0200 Subject: 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. --- bsps/sparc/shared/start/start.S | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) (limited to 'bsps/sparc/shared/start/start.S') diff --git a/bsps/sparc/shared/start/start.S b/bsps/sparc/shared/start/start.S index cd43f08f01..45bd145d4a 100644 --- a/bsps/sparc/shared/start/start.S +++ b/bsps/sparc/shared/start/start.S @@ -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 -- cgit v1.2.3