version 1.3, 2007/11/04 22:41:55 |
version 1.4, 2007/11/23 13:37:42 |
|
|
/* |
/* |
* $Id$ |
* $Id$ |
*/ |
*/ |
|
#include <sys/types.h> |
|
|
|
#include <sys/pcb.h> |
|
|
/* |
/* |
* IRQ trampoline. |
* IRQ trampoline-> |
* Will enter here when Core IRQ line is asserted. |
* Will enter here when Core IRQ line is asserted. |
* IRQ controller driver configures us to call him on assert; |
* IRQ controller driver configures us to call him on assert; |
* by default (until some irqc attached) we just return doing nothing. |
* 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); |
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 |
void |
__do_nothing_and_return(void) |
__do_nothing_and_return(void) |
{ |
{ |
|
|
__asm __volatile("mov r1,r1"); |
__asm __volatile("mov r1,r1"); |
} |
} |
|
|
void (*irq_trampoline_func)(void) = __do_nothing_and_return; |
|
|
|
|
|
void |
void |
irq_trampoline(void) |
irq_trampoline(struct pcb *ifp) |
{ |
{ |
|
|
|
iframep = ifp; |
|
|
irq_trampoline_func(); |
irq_trampoline_func(); |
} |
} |
|
|