=================================================================== RCS file: /cvs/funnyos/arch/testarm/boot/irq_trampoline.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- funnyos/arch/testarm/boot/irq_trampoline.c 2007/11/04 22:41:55 1.3 +++ funnyos/arch/testarm/boot/irq_trampoline.c 2007/11/23 13:37:42 1.4 @@ -1,18 +1,27 @@ /* - * $Id: irq_trampoline.c,v 1.3 2007/11/04 22:41:55 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(void); +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) { @@ -20,12 +29,13 @@ __asm __volatile("mov r1,r1"); } -void (*irq_trampoline_func)(void) = __do_nothing_and_return; - void -irq_trampoline(void) +irq_trampoline(struct pcb *ifp) { + + iframep = ifp; + irq_trampoline_func(); }