aboutsummaryrefslogtreecommitdiff
path: root/arch/i686/isr-as.S
blob: 858ce47f3c9d42f2b70a13d5b81b12579d3d66f0 (plain)
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
        .extern isr_handler
isr_stub:
        pusha
        push %ds
        push %es
        push %fs
        push %gs
        mov $0x10, %ax   # Load the Kernel Data Segment descriptor!
        mov %ax, %ds
        mov %ax, %es
        mov %ax, %fs
        mov %ax, %gs
        mov %esp, %eax   # Push us the stack
        push %eax
        call isr_handler
        pop %eax
        pop %gs
        pop %fs
        pop %es
        pop %ds
        popa
        add $8, %esp
        iret

        # stub ISR's:
        .global _isr0
        .global _isr1
        .global _isr2
        .global _isr3
        .global _isr4
        .global _isr5
        .global _isr6
        .global _isr7
        .global _isr8
        .global _isr9
        .global _isr10
        .global _isr11
        .global _isr12
        .global _isr13
        .global _isr14
        .global _isr15
        .global _isr16
        .global _isr17
        .global _isr18
        .global _isr19
        .global _isr20
        .global _isr21
        .global _isr22
        .global _isr23
        .global _isr24
        .global _isr25
        .global _isr26
        .global _isr27
        .global _isr28
        .global _isr29
        .global _isr30
        .global _isr31

        # Interrupts 8, 10, 11, 12, 13, and 14 push error codes onto the stack

_isr0:
    cli
    pushl $0
    pushl $0
    jmp isr_stub
_isr1:
    cli
    pushl $0
    pushl $1
    jmp isr_stub
_isr2:
    cli
    pushl $0
    pushl $2
    jmp isr_stub
_isr3:
    cli
    pushl $0
    pushl $3
    jmp isr_stub
_isr4:
    cli
    pushl $0
    pushl $4
    jmp isr_stub
_isr5:
    cli
    pushl $0
    pushl $5
    jmp isr_stub
_isr6:
    cli
    pushl $0
    pushl $6
    jmp isr_stub
_isr7:
    cli
    pushl $0
    pushl $7
    jmp isr_stub
_isr8:
    cli
    pushl $8
    jmp isr_stub
_isr9:
    cli
    pushl $0
    pushl $9
    jmp isr_stub
_isr10:
    cli
    pushl $10
    jmp isr_stub
_isr11:
    cli
    pushl $11
    jmp isr_stub
_isr12:
    cli
    pushl $12
    jmp isr_stub
_isr13:
    cli
    pushl $13
    jmp isr_stub
_isr14:
    cli
    pushl $14
    jmp isr_stub
_isr15:
    cli
    pushl $0
    pushl $15
    jmp isr_stub
_isr16:
    cli
    pushl $0
    pushl $16
    jmp isr_stub
_isr17:
    cli
    pushl $0
    pushl $17
    jmp isr_stub
_isr18:
    cli
    pushl $0
    pushl $18
    jmp isr_stub
_isr19:
    cli
    pushl $0
    pushl $19
    jmp isr_stub
_isr20:
    cli
    pushl $0
    pushl $20
    jmp isr_stub
_isr21:
    cli
    pushl $0
    pushl $21
    jmp isr_stub
_isr22:
    cli
    pushl $0
    pushl $22
    jmp isr_stub
_isr23:
    cli
    pushl $0
    pushl $23
    jmp isr_stub
_isr24:
    cli
    pushl $0
    pushl $24
    jmp isr_stub
_isr25:
    cli
    pushl $0
    pushl $25
    jmp isr_stub
_isr26:
    cli
    pushl $0
    pushl $26
    jmp isr_stub
_isr27:
    cli
    pushl $0
    pushl $27
    jmp isr_stub
_isr28:
    cli
    pushl $0
    pushl $28
    jmp isr_stub
_isr29:
    cli
    pushl $0
    pushl $29
    jmp isr_stub
_isr30:
    cli
    pushl $0
    pushl $30
    jmp isr_stub
_isr31:
    cli
    pushl $0
    pushl $31
    jmp isr_stub