=================================================================== RCS file: /cvs/funnyos/arch/testarm/boot/irq_trampoline.c,v retrieving revision 1.1 retrieving revision 1.4 diff -u -r1.1 -r1.4 --- funnyos/arch/testarm/boot/irq_trampoline.c 2007/10/29 20:34:23 1.1 +++ funnyos/arch/testarm/boot/irq_trampoline.c 2007/11/23 13:37:42 1.4 @@ -1,14 +1,27 @@ /* - * $Id: irq_trampoline.c,v 1.1 2007/10/29 20:34:23 init Exp $ + * $Id: irq_trampoline.c,v 1.4 2007/11/23 13:37:42 nbrk Exp $ */ +#include +#include + /* - * IRQ trampoline. + * IRQ trampoline-> * Will enter here when Core IRQ line is asserted. * IRQ controller driver configures us to call him on assert; * by default (until some irqc attached) we just return doing nothing. */ +void irq_trampoline(struct pcb *iframep); +void __do_nothing_and_return(void); + +/* default to do nothing (will overrided by some irqc driver) */ +void (*irq_trampoline_func)(void) = __do_nothing_and_return; + +/* interrupt frame pointer */ +struct pcb *iframep; + + void __do_nothing_and_return(void) { @@ -16,5 +29,14 @@ __asm __volatile("mov r1,r1"); } -void (*irq_trampoline)(void) = __do_nothing_and_return; + +void +irq_trampoline(struct pcb *ifp) +{ + + iframep = ifp; + + irq_trampoline_func(); +} +