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
41 #define RTC_TIMER_IV 210
44 #define PC_AT_IRQ_RTC 8
45 #define PC_AT_IRQ_KBD 1
52 unsigned int err_code;
58 } __attribute__((packed)) isr_param;
60 typedef void (*int_subscriber)(isr_param*);
62 #pragma region ISR_DECLARATION
153 intr_subscribe(const uint8_t vector, int_subscriber);
156 intr_unsubscribe(const uint8_t vector, int_subscriber);
159 intr_set_fallback_handler(int_subscriber);
162 intr_handler(isr_param* param);
169 #endif /* __LUNAIX_INTERRUPTS_H */