1 #ifndef __LUNAIX_INTC_H
2 #define __LUNAIX_INTC_H
4 #include <lunaix/types.h>
6 #define IRQ_TRIG_EDGE 0b0
7 #define IRQ_TRIG_LEVEL 0b1
9 #define IRQ_TYPE_FIXED (0b01 << 1)
10 #define IRQ_TYPE_NMI (0b11 << 1)
11 #define IRQ_TYPE (0b11 << 1)
13 #define IRQ_VE_HI (0b1 << 3)
14 #define IRQ_VE_LO (0b0 << 3)
16 #define IRQ_DEFAULT (IRQ_TRIG_EDGE | IRQ_TYPE_FIXED | IRQ_VE_HI)
23 void (*irq_attach)(struct intc_context*,
28 void (*notify_eoi)(struct intc_context*, cpu_t id, int iv);
35 intc_irq_attach(int irq, int iv, cpu_t dest, u32_t flags);
38 * @brief Notify end of interrupt event
43 intc_notify_eoi(cpu_t id, int iv);
46 * @brief Notify end of scheduling event
51 intc_notify_eos(cpu_t id);
53 #endif /* __LUNAIX_INTC_H */