diff options
author | Daniel Cederman <cederman@gaisler.com> | 2015-01-09 09:03:59 +0100 |
---|---|---|
committer | Daniel Hellstrom <daniel@gaisler.com> | 2015-02-11 15:35:23 +0100 |
commit | 0c94a46fa3938922481f06e8c64d8caba6d753b3 (patch) | |
tree | bface1d6d879d04003f0b75d4dbca788c6ad8609 /c/src/lib/libbsp/sparc/shared/irq/irq-shared.c | |
parent | or1k/cpu.c: Eliminate dependency on BSP provided header (diff) | |
download | rtems-0c94a46fa3938922481f06e8c64d8caba6d753b3.tar.bz2 |
bsp/sparc: Move BSP_ISR_handler to a separate file and rename it
This allows it to be wrapped by another function at link-time
and can be used to trace interrupts. If not placed in a separate
file, the function pointer address used in BSP_shared_interrupt_init
will be resolved at compile-time, and the function will not be wrappable.
Diffstat (limited to 'c/src/lib/libbsp/sparc/shared/irq/irq-shared.c')
-rw-r--r-- | c/src/lib/libbsp/sparc/shared/irq/irq-shared.c | 34 |
1 files changed, 11 insertions, 23 deletions
diff --git a/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c b/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c index 79dbe55648..174324fb46 100644 --- a/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c +++ b/c/src/lib/libbsp/sparc/shared/irq/irq-shared.c @@ -1,3 +1,13 @@ +/* +* COPYRIGHT (c) 2012-2015 +* Cobham Gaisler +* +* The license and distribution terms for this file may be +* found in the file LICENSE in this distribution or at +* http://www.rtems.org/license/LICENSE. +* +*/ + #include <rtems.h> #include <bsp.h> #include <bsp/irq-generic.h> @@ -27,28 +37,6 @@ static inline int bsp_irq_cpu(int irq) } #endif -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] */ -static void BSP_ISR_handler(rtems_vector_number vector) -{ - int irq = vector - 0x10; - - /* Let BSP fixup and/or handle incomming IRQ */ - irq = bsp_irq_fixup(irq); - - bsp_dispatch_irq(irq); -} - /* Initialize interrupts */ void BSP_shared_interrupt_init(void) { @@ -64,7 +52,7 @@ void BSP_shared_interrupt_init(void) continue; #endif vector = SPARC_ASYNCHRONOUS_TRAP(i) + 0x10; - rtems_interrupt_catch(BSP_ISR_handler, vector, &previous_isr); + rtems_interrupt_catch(bsp_isr_handler, vector, &previous_isr); } /* Initalize interrupt support */ |