3fb86d63841f1b0662c419a45a9a5c0dc0caf781
[lunaix-os.git] / lunaix-os / includes / arch / x86 / interrupts.h
1 #ifndef __LUNAIX_INTERRUPTS_H
2 #define __LUNAIX_INTERRUPTS_H
3
4 #define FAULT_DIVISION_ERROR            0x0
5 #define FAULT_TRAP_DEBUG_EXCEPTION      0x1
6 #define INT_NMI                         0x2
7 #define TRAP_BREAKPOINT                 0x3
8 #define TRAP_OVERFLOW                   0x4
9 #define FAULT_BOUND_EXCEED              0x5
10 #define FAULT_INVALID_OPCODE            0x6
11 #define FAULT_NO_MATH_PROCESSOR         0x7
12 #define ABORT_DOUBLE_FAULT              0x8
13 #define FAULT_RESERVED_0                0x9
14 #define FAULT_INVALID_TSS               0xa
15 #define FAULT_SEG_NOT_PRESENT           0xb
16 #define FAULT_STACK_SEG_FAULT           0xc
17 #define FAULT_GENERAL_PROTECTION        0xd
18 #define FAULT_PAGE_FAULT                0xe
19 #define FAULT_RESERVED_1                0xf
20 #define FAULT_X87_FAULT                 0x10
21 #define FAULT_ALIGNMENT_CHECK           0x11
22 #define ABORT_MACHINE_CHECK             0x12
23 #define FAULT_SIMD_FP_EXCEPTION         0x13
24 #define FAULT_VIRTUALIZATION_EXCEPTION  0x14
25 #define FAULT_CONTROL_PROTECTION        0x15
26
27 typedef struct {
28     unsigned int vector;
29     unsigned int err_code;
30     unsigned int eip;
31     unsigned int cs;
32     unsigned int eflags;
33     unsigned int esp;
34     unsigned int ss;
35 } __attribute__((packed)) isr_param;
36
37 void
38 _asm_isr0();
39
40 void
41 _asm_isr13();
42
43 void
44 _asm_isr14();
45
46 void
47 interrupt_handler(isr_param* param);
48
49 #endif /* __LUNAIX_INTERRUPTS_H */