diff options
Diffstat (limited to 'bsps/sparc/shared/irq/bsp_isr_handler.c')
-rw-r--r-- | bsps/sparc/shared/irq/bsp_isr_handler.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/bsps/sparc/shared/irq/bsp_isr_handler.c b/bsps/sparc/shared/irq/bsp_isr_handler.c index a4d33b0932..2616b5caae 100644 --- a/bsps/sparc/shared/irq/bsp_isr_handler.c +++ b/bsps/sparc/shared/irq/bsp_isr_handler.c @@ -8,28 +8,19 @@ * */ -#include <rtems.h> #include <bsp.h> #include <bsp/irq-generic.h> -static inline void bsp_dispatch_irq(int irq) -{ - bsp_interrupt_handler_entry *e = - &bsp_interrupt_handler_table[bsp_interrupt_handler_index(irq)]; - - while (e != NULL) { - (*e->handler)(e->arg); - e = e->next; - } -} - -/* Called directly from IRQ trap handler TRAP[0x10..0x1F] = IRQ[0..15] */ -void bsp_isr_handler(rtems_vector_number vector) +/* + * This function is called directly from _SPARC_Interrupt_trap() for + * traps 0x10 to 0x1F which correspond to IRQ 0 to 15 respectively. + */ +void _SPARC_Interrupt_dispatch( uint32_t irq ) { - int irq = vector - 0x10; + bsp_interrupt_assert( irq < BSP_INTERRUPT_VECTOR_COUNT ); - /* Let BSP fixup and/or handle incomming IRQ */ - irq = bsp_irq_fixup(irq); + /* Let BSP fixup and/or handle incoming IRQ */ + irq = bsp_irq_fixup( irq ); - bsp_dispatch_irq(irq); + bsp_interrupt_handler_dispatch_unchecked( irq ); } |