1 #ifndef __LUNAIX_INTERRUPTS_H
2 #define __LUNAIX_INTERRUPTS_H
5 #define FAULT_DIVISION_ERROR 0
6 #define FAULT_TRAP_DEBUG_EXCEPTION 1
8 #define TRAP_BREAKPOINT 3
9 #define TRAP_OVERFLOW 4
10 #define FAULT_BOUND_EXCEED 5
11 #define FAULT_INVALID_OPCODE 6
12 #define FAULT_NO_MATH_PROCESSOR 7
13 #define ABORT_DOUBLE_FAULT 8
14 #define FAULT_RESERVED_0 9
15 #define FAULT_INVALID_TSS 10
16 #define FAULT_SEG_NOT_PRESENT 11
17 #define FAULT_STACK_SEG_FAULT 12
18 #define FAULT_GENERAL_PROTECTION 13
19 #define FAULT_PAGE_FAULT 14
20 #define FAULT_RESERVED_1 15
21 #define FAULT_X87_FAULT 16
22 #define FAULT_ALIGNMENT_CHECK 17
23 #define ABORT_MACHINE_CHECK 18
24 #define FAULT_SIMD_FP_EXCEPTION 19
25 #define FAULT_VIRTUALIZATION_EXCEPTION 20
26 #define FAULT_CONTROL_PROTECTION 21
29 #define LUNAIX_SYS_PANIC 32
31 #define EX_INTERRUPT_BEGIN 200
36 #define RTC_TIMER_IV 210
40 #define APIC_ERROR_IV 250
41 #define APIC_LINT0_IV 251
42 #define APIC_SPIV_IV 252
43 #define APIC_TIMER_IV 253
45 #define PC_AT_IRQ_RTC 8
46 #define PC_AT_IRQ_KBD 1
53 unsigned int err_code;
59 } __attribute__((packed)) isr_param;
61 typedef void (*int_subscriber)(isr_param*);
63 #pragma region ISR_DECLARATION
65 #define ISR(iv) void _asm_isr##iv();
105 intr_subscribe(const uint8_t vector, int_subscriber);
108 intr_unsubscribe(const uint8_t vector, int_subscriber);
111 intr_set_fallback_handler(int_subscriber);
114 intr_handler(isr_param* param);
121 #endif /* __LUNAIX_INTERRUPTS_H */