diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-06-18 16:44:11 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-06-24 11:36:28 +0200 |
commit | be96cb4345554fac614b252fe8f78dbf32c3a981 (patch) | |
tree | e69c244a4e5ab5dd11bdd4c14ea2c5ef66ef6c34 /bsps/sparc/shared/start/start.S | |
parent | bsps: bsp_interrupt_handler_dispatch_unchecked() (diff) | |
download | rtems-be96cb4345554fac614b252fe8f78dbf32c3a981.tar.bz2 |
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.
Diffstat (limited to 'bsps/sparc/shared/start/start.S')
-rw-r--r-- | bsps/sparc/shared/start/start.S | 39 |
1 files changed, 23 insertions, 16 deletions
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 @@ -33,6 +33,13 @@ 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 */ #define FPDIS_TRAP(_handler) \ @@ -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 |