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
33 #define APIC_ERROR_IV 200
34 #define APIC_LINT0_IV 201
35 #define APIC_TIMER_IV 202
36 #define APIC_SPIV_IV 203
38 #define RTC_TIMER_IV 210
41 #define PC_AT_IRQ_RTC 8
42 #define PC_AT_IRQ_KBD_BUF_FULL 1
49 unsigned int err_code;
55 } __attribute__((packed)) isr_param;
57 typedef void (*int_subscriber)(isr_param*);
59 #pragma region ISR_DECLARATION
147 intr_subscribe(const uint8_t vector, int_subscriber);
150 intr_unsubscribe(const uint8_t vector, int_subscriber);
153 intr_set_fallback_handler(int_subscriber);
156 intr_handler(isr_param* param);
163 #endif /* __LUNAIX_INTERRUPTS_H */