nuclear@11: #ifndef INTR_H_ nuclear@11: #define INTR_H_ nuclear@11: nuclear@11: #include nuclear@25: #include "asmops.h" nuclear@11: nuclear@35: /* offset used to remap IRQ numbers (+32) */ nuclear@35: #define IRQ_OFFSET 32 nuclear@35: /* conversion macros between IRQ and interrupt numbers */ nuclear@35: #define IRQ_TO_INTR(x) ((x) + IRQ_OFFSET) nuclear@35: #define INTR_TO_IRQ(x) ((x) - IRQ_OFFSET) nuclear@35: /* checks whether a particular interrupt is an remapped IRQ */ nuclear@35: #define IS_IRQ(n) ((n) >= IRQ_OFFSET && (n) < IRQ_OFFSET + 16) nuclear@35: nuclear@35: nuclear@11: typedef void (*intr_func_t)(int, uint32_t); nuclear@11: nuclear@11: nuclear@11: void init_intr(void); nuclear@11: nuclear@11: void interrupt(int intr_num, intr_func_t func); nuclear@11: nuclear@25: /* defined in intr-asm.S */ nuclear@25: int get_intr_state(void); nuclear@25: void set_intr_state(int s); nuclear@25: nuclear@11: #endif /* INTR_H_ */