! Fixed the root Makefile
[lightOS.git] / kernel / x86 / interrupt.S
blobb751fa08df5302cc0776b6207f596b335c1be1a1
1 /*
2 lightOS kernel
3 Copyright (C) 2007-2009 Jörg Pfähler
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
19 #include "Makefile.asm.config"
20 .extern interrupt
22 .code32
23 .section .text
24 /*#############################################################################
25 ##### interrupt handler helper macros and functions                       #####
26 #############################################################################*/
27 interrupt_handler:
28         pusha
29         mov $0x10, %ax
30         mov %ax, %ds
31         mov %ax, %es
32         mov %ax, %fs
33         mov %ax, %gs
34         
35         mov %esp, %eax
36         xor %ebp, %ebp
37         push %eax
38         call interrupt
39         add $0x04, %esp
40         
41         mov $0x23, %ax
42         mov %ax, %ds
43         mov %ax, %es
44         mov %ax, %fs
45         mov %ax, %gs
46         popa
47         add $0x08, %esp
48         iret
49 /*########################################################################
50 ##### Macro for exception handler without error code                 #####
51 ########################################################################*/
52 .macro INTERRUPT_HANDLER intnr
53         .global interrupt\intnr
54         interrupt\intnr:
55                 pushl $0
56                 pushl $\intnr
57                 jmp interrupt_handler
58 .endm
59 /*########################################################################
60 ##### Macro for exception handler with error code                    #####
61 ########################################################################*/
62 .macro INTERRUPT_HANDLER_ERRORCODE intnr
63         .global interrupt\intnr
64         interrupt\intnr:
65                 pushl $\intnr
66                 jmp interrupt_handler
67 .endm
68 /*#############################################################################
69 ##### All interrupt handler                                               #####
70 #############################################################################*/
71 INTERRUPT_HANDLER 0
72 INTERRUPT_HANDLER 1
73 INTERRUPT_HANDLER 2
74 INTERRUPT_HANDLER 3
75 INTERRUPT_HANDLER 4
76 INTERRUPT_HANDLER 5
77 INTERRUPT_HANDLER 6
78 INTERRUPT_HANDLER 7
79 INTERRUPT_HANDLER_ERRORCODE 8
80 INTERRUPT_HANDLER 9
81 INTERRUPT_HANDLER_ERRORCODE 10
82 INTERRUPT_HANDLER_ERRORCODE 11
83 INTERRUPT_HANDLER_ERRORCODE 12
84 INTERRUPT_HANDLER_ERRORCODE 13
85 INTERRUPT_HANDLER_ERRORCODE 14
86 INTERRUPT_HANDLER 15
87 INTERRUPT_HANDLER 16
88 INTERRUPT_HANDLER_ERRORCODE 17
89 INTERRUPT_HANDLER 18
90 INTERRUPT_HANDLER 19
91 INTERRUPT_HANDLER 20
92 INTERRUPT_HANDLER 21
93 INTERRUPT_HANDLER 22
94 INTERRUPT_HANDLER 23
95 INTERRUPT_HANDLER 24
96 INTERRUPT_HANDLER 25
97 INTERRUPT_HANDLER 26
98 INTERRUPT_HANDLER 27
99 INTERRUPT_HANDLER 28
100 INTERRUPT_HANDLER 29
101 INTERRUPT_HANDLER 30
102 INTERRUPT_HANDLER 31
103 INTERRUPT_HANDLER 32
104 INTERRUPT_HANDLER 33
105 INTERRUPT_HANDLER 34
106 INTERRUPT_HANDLER 35
107 INTERRUPT_HANDLER 36
108 INTERRUPT_HANDLER 37
109 INTERRUPT_HANDLER 38
110 INTERRUPT_HANDLER 39
111 INTERRUPT_HANDLER 40
112 INTERRUPT_HANDLER 41
113 INTERRUPT_HANDLER 42
114 INTERRUPT_HANDLER 43
115 INTERRUPT_HANDLER 44
116 INTERRUPT_HANDLER 45
117 INTERRUPT_HANDLER 46
118 INTERRUPT_HANDLER 47
119 #ifdef _LIGHTOS_SMP
120         INTERRUPT_HANDLER 48
121         INTERRUPT_HANDLER 49
122         INTERRUPT_HANDLER 50
123         INTERRUPT_HANDLER 51
124         INTERRUPT_HANDLER 52
125         INTERRUPT_HANDLER 53
126         INTERRUPT_HANDLER 54
127         INTERRUPT_HANDLER 55
128         INTERRUPT_HANDLER 56
129         INTERRUPT_HANDLER 57
130         INTERRUPT_HANDLER 58
131         INTERRUPT_HANDLER 59
132         INTERRUPT_HANDLER 60
133         INTERRUPT_HANDLER 61
134         INTERRUPT_HANDLER 62
135         INTERRUPT_HANDLER 63
136         INTERRUPT_HANDLER 64
137         INTERRUPT_HANDLER 65
138         INTERRUPT_HANDLER 66
139         INTERRUPT_HANDLER 67
140         INTERRUPT_HANDLER 68
141         INTERRUPT_HANDLER 69
142         INTERRUPT_HANDLER 70
143         INTERRUPT_HANDLER 71
144         INTERRUPT_HANDLER 72
145         INTERRUPT_HANDLER 73
146         INTERRUPT_HANDLER 74
147         INTERRUPT_HANDLER 75
148         INTERRUPT_HANDLER 76
149         INTERRUPT_HANDLER 77
150         INTERRUPT_HANDLER 78
151         INTERRUPT_HANDLER 79
152         INTERRUPT_HANDLER 80
153         INTERRUPT_HANDLER 81
154         INTERRUPT_HANDLER 82
155         INTERRUPT_HANDLER 83
156         INTERRUPT_HANDLER 84
157         INTERRUPT_HANDLER 85
158         INTERRUPT_HANDLER 86
159         INTERRUPT_HANDLER 87
160         INTERRUPT_HANDLER 88
161         INTERRUPT_HANDLER 89
162         INTERRUPT_HANDLER 90
163         INTERRUPT_HANDLER 91
164         INTERRUPT_HANDLER 92
165         INTERRUPT_HANDLER 93
166         INTERRUPT_HANDLER 94
167         INTERRUPT_HANDLER 95
168         INTERRUPT_HANDLER 96
169         INTERRUPT_HANDLER 97
170         INTERRUPT_HANDLER 98
171         INTERRUPT_HANDLER 99
172         INTERRUPT_HANDLER 100
173         INTERRUPT_HANDLER 101
174         INTERRUPT_HANDLER 102
175         INTERRUPT_HANDLER 103
176         INTERRUPT_HANDLER 104
177         INTERRUPT_HANDLER 105
178         INTERRUPT_HANDLER 106
179         INTERRUPT_HANDLER 107
180         INTERRUPT_HANDLER 108
181         INTERRUPT_HANDLER 109
182         INTERRUPT_HANDLER 110
183         INTERRUPT_HANDLER 111
184         INTERRUPT_HANDLER 112
185         INTERRUPT_HANDLER 113
186         INTERRUPT_HANDLER 114
187         INTERRUPT_HANDLER 115
188         INTERRUPT_HANDLER 116
189         INTERRUPT_HANDLER 117
190         INTERRUPT_HANDLER 118
191         INTERRUPT_HANDLER 119
192         INTERRUPT_HANDLER 120
193         INTERRUPT_HANDLER 121
194         INTERRUPT_HANDLER 122
195         INTERRUPT_HANDLER 123
196         INTERRUPT_HANDLER 124
197         INTERRUPT_HANDLER 125
198         INTERRUPT_HANDLER 126
199         INTERRUPT_HANDLER 127
200         INTERRUPT_HANDLER 128
201         INTERRUPT_HANDLER 129
202         INTERRUPT_HANDLER 130
203         INTERRUPT_HANDLER 131
204         INTERRUPT_HANDLER 132
205         INTERRUPT_HANDLER 133
206         INTERRUPT_HANDLER 134
207         INTERRUPT_HANDLER 135
208         INTERRUPT_HANDLER 136
209         INTERRUPT_HANDLER 137
210         INTERRUPT_HANDLER 138
211         INTERRUPT_HANDLER 139
212         INTERRUPT_HANDLER 140
213         INTERRUPT_HANDLER 141
214         INTERRUPT_HANDLER 142
215         INTERRUPT_HANDLER 143
216         INTERRUPT_HANDLER 144
217         INTERRUPT_HANDLER 145
218         INTERRUPT_HANDLER 146
219         INTERRUPT_HANDLER 147
220         INTERRUPT_HANDLER 148
221         INTERRUPT_HANDLER 149
222         INTERRUPT_HANDLER 150
223         INTERRUPT_HANDLER 151
224         INTERRUPT_HANDLER 152
225         INTERRUPT_HANDLER 153
226         INTERRUPT_HANDLER 154
227         INTERRUPT_HANDLER 155
228         INTERRUPT_HANDLER 156
229         INTERRUPT_HANDLER 157
230         INTERRUPT_HANDLER 158
231         INTERRUPT_HANDLER 159
232         INTERRUPT_HANDLER 160
233         INTERRUPT_HANDLER 161
234         INTERRUPT_HANDLER 162
235         INTERRUPT_HANDLER 163
236         INTERRUPT_HANDLER 164
237         INTERRUPT_HANDLER 165
238         INTERRUPT_HANDLER 166
239         INTERRUPT_HANDLER 167
240         INTERRUPT_HANDLER 168
241         INTERRUPT_HANDLER 169
242         INTERRUPT_HANDLER 170
243         INTERRUPT_HANDLER 171
244         INTERRUPT_HANDLER 172
245         INTERRUPT_HANDLER 173
246         INTERRUPT_HANDLER 174
247         INTERRUPT_HANDLER 175
248         INTERRUPT_HANDLER 176
249         INTERRUPT_HANDLER 177
250         INTERRUPT_HANDLER 178
251         INTERRUPT_HANDLER 179
252         INTERRUPT_HANDLER 180
253         INTERRUPT_HANDLER 181
254         INTERRUPT_HANDLER 182
255         INTERRUPT_HANDLER 183
256         INTERRUPT_HANDLER 184
257         INTERRUPT_HANDLER 185
258         INTERRUPT_HANDLER 186
259         INTERRUPT_HANDLER 187
260         INTERRUPT_HANDLER 188
261         INTERRUPT_HANDLER 189
262         INTERRUPT_HANDLER 190
263         INTERRUPT_HANDLER 191
264         INTERRUPT_HANDLER 192
265         INTERRUPT_HANDLER 193
266         INTERRUPT_HANDLER 194
267         INTERRUPT_HANDLER 195
268         INTERRUPT_HANDLER 196
269         INTERRUPT_HANDLER 197
270         INTERRUPT_HANDLER 198
271         INTERRUPT_HANDLER 199
272         INTERRUPT_HANDLER 200
273         INTERRUPT_HANDLER 201
274         INTERRUPT_HANDLER 202
275         INTERRUPT_HANDLER 203
276         INTERRUPT_HANDLER 204
277         INTERRUPT_HANDLER 205
278         INTERRUPT_HANDLER 206
279         INTERRUPT_HANDLER 207
280         INTERRUPT_HANDLER 208
281         INTERRUPT_HANDLER 209
282         INTERRUPT_HANDLER 210
283         INTERRUPT_HANDLER 211
284         INTERRUPT_HANDLER 212
285         INTERRUPT_HANDLER 213
286         INTERRUPT_HANDLER 214
287         INTERRUPT_HANDLER 215
288         INTERRUPT_HANDLER 216
289         INTERRUPT_HANDLER 217
290         INTERRUPT_HANDLER 218
291         INTERRUPT_HANDLER 219
292         INTERRUPT_HANDLER 220
293         INTERRUPT_HANDLER 221
294         INTERRUPT_HANDLER 222
295         INTERRUPT_HANDLER 223
296         INTERRUPT_HANDLER 224
297         INTERRUPT_HANDLER 225
298         INTERRUPT_HANDLER 226
299         INTERRUPT_HANDLER 227
300         INTERRUPT_HANDLER 228
301         INTERRUPT_HANDLER 229
302         INTERRUPT_HANDLER 230
303         INTERRUPT_HANDLER 231
304         INTERRUPT_HANDLER 232
305         INTERRUPT_HANDLER 233
306         INTERRUPT_HANDLER 234
307         INTERRUPT_HANDLER 235
308         INTERRUPT_HANDLER 236
309         INTERRUPT_HANDLER 237
310         INTERRUPT_HANDLER 238
311         INTERRUPT_HANDLER 239
312         INTERRUPT_HANDLER 240
313         INTERRUPT_HANDLER 241
314         INTERRUPT_HANDLER 242
315         INTERRUPT_HANDLER 243
316         INTERRUPT_HANDLER 244
317         INTERRUPT_HANDLER 245
318         INTERRUPT_HANDLER 246
319         INTERRUPT_HANDLER 247
320         INTERRUPT_HANDLER 248
321         INTERRUPT_HANDLER 249
322         INTERRUPT_HANDLER 250
323         INTERRUPT_HANDLER 251
324         INTERRUPT_HANDLER 252
325         INTERRUPT_HANDLER 253
326 #endif
327 INTERRUPT_HANDLER 255