-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path_irq.asm
More file actions
138 lines (120 loc) · 1.78 KB
/
_irq.asm
File metadata and controls
138 lines (120 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
section .text
global _irq_0
global _irq_1
global _irq_2
global _irq_3
global _irq_4
global _irq_5
global _irq_6
global _irq_7
global _irq_8
global _irq_9
global _irq_10
global _irq_11
global _irq_12
global _irq_13
global _irq_14
global _irq_15
_irq_0:
cli
push byte 0
push byte 32
jmp _irq_common
_irq_1:
cli
push byte 0
push byte 33
jmp _irq_common
_irq_2:
cli
push byte 0
push byte 34
jmp _irq_common
_irq_3:
cli
push byte 0
push byte 35
jmp _irq_common
_irq_4:
cli
push byte 0
push byte 36
jmp _irq_common
_irq_5:
cli
push byte 0
push byte 37
jmp _irq_common
_irq_6:
cli
push byte 0
push byte 38
jmp _irq_common
_irq_7:
cli
push byte 0
push byte 39
jmp _irq_common
_irq_8:
cli
push byte 0
push byte 40
jmp _irq_common
_irq_9:
cli
push byte 0
push byte 41
jmp _irq_common
_irq_10:
cli
push byte 0
push byte 42
jmp _irq_common
_irq_11:
cli
push byte 0
push byte 43
jmp _irq_common
_irq_12:
cli
push byte 0
push byte 44
jmp _irq_common
_irq_13:
cli
push byte 0
push byte 45
jmp _irq_common
_irq_14:
cli
push byte 0
push byte 46
jmp _irq_common
_irq_15:
cli
push byte 0
push byte 47
jmp _irq_common
_irq_common:
pusha
push ds
push es
push fs
push gs
mov ax, 0x10 ;Load ring-0 DS selector
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov eax, esp ;Push the stack
push eax
extern irq_main_handler
call irq_main_handler
pop eax
pop gs
pop fs
pop es
pop ds
popa
add esp, 8 ;cleans the pushed error code and pushed isr number
iret ;pops CS, EIP, EFLAGS, SS and ESP