]> git.dujemihanovic.xyz Git - nameless-os.git/blob - kernel/arch/x86/irq/stub.s
Use interrupt frame and new double fault handler
[nameless-os.git] / kernel / arch / x86 / irq / stub.s
1 ; Stubs for interrupt handlers
2
3 bits 32
4 section .text
5
6 extern int_handler
7
8 int_common:
9 cld
10 push esp
11 call int_handler
12 add esp, 12
13 popad
14 iretd
15
16 %macro INTERRUPT 1
17 global int_%1
18 int_%1:
19 push dword 0
20 pushad
21 push dword %1
22 jmp int_common
23 %endmacro
24
25 %macro INTERRUPT_ERR 1
26 global int_%1
27 int_%1:
28 pushad
29 push dword %1
30 jmp int_common
31 %endmacro
32
33 INTERRUPT 0
34 INTERRUPT 1
35 INTERRUPT 2
36 INTERRUPT 3
37 INTERRUPT 4
38 INTERRUPT 5
39 INTERRUPT 6
40 INTERRUPT 7
41 INTERRUPT_ERR 8
42 INTERRUPT 9
43 INTERRUPT_ERR 10
44 INTERRUPT_ERR 11
45 INTERRUPT_ERR 12
46 INTERRUPT_ERR 13
47 INTERRUPT_ERR 14
48 INTERRUPT 15
49 INTERRUPT 16
50 INTERRUPT_ERR 17
51 INTERRUPT 18
52 INTERRUPT 19
53 INTERRUPT 20
54 INTERRUPT_ERR 21
55 INTERRUPT 22
56 INTERRUPT 23
57 INTERRUPT 24
58 INTERRUPT 25
59 INTERRUPT 26
60 INTERRUPT 27
61 INTERRUPT 28
62 INTERRUPT_ERR 29
63 INTERRUPT_ERR 30
64 INTERRUPT 31
65 INTERRUPT 32
66 INTERRUPT 33
67 INTERRUPT 34
68 INTERRUPT 35
69 INTERRUPT 36
70 INTERRUPT 37
71 INTERRUPT 38
72 INTERRUPT 39
73 INTERRUPT 40
74 INTERRUPT 41
75 INTERRUPT 42
76 INTERRUPT 43
77 INTERRUPT 44
78 INTERRUPT 45
79 INTERRUPT 46
80 INTERRUPT 47
81
82 ; Define flat table containing addresses of handlers
83 section .rodata
84 global _int_handler_table
85 _int_handler_table:
86 %macro INT 1
87 dd int_%1
88 %endmacro
89
90 %assign i 0
91 %rep 48
92 INT i
93 %assign i i+1
94 %endrep