1 #include <ndk/i386/segment.h>
2 #include <../hal/halx86/include/halirq.h>
6 #define BUILD_INTERRUPT_HANDLER(intnum) \
7 .global _KiUnexpectedInterrupt##intnum; \
8 _KiUnexpectedInterrupt##intnum:; \
10 movl $0x##intnum, %ebx; \
11 jmp _KiCommonInterrupt;
13 /* Interrupt handlers and declarations */
16 BUILD_INTERRUPT_HANDLER(x##y)
19 B(x,0) B(x,1) B(x,2) B(x,3) \
20 B(x,4) B(x,5) B(x,6) B(x,7) \
21 B(x,8) B(x,9) B(x,A) B(x,B) \
22 B(x,C) B(x,D) B(x,E) B(x,F)
36 movl $PCR_SELECTOR,%eax
40 call _KiInterruptDispatch
49 B16(3) B16(4) B16(5) B16(6)
50 B16(7) B16(8) B16(9) B16(A)
51 B16(B) B16(C) B16(D) B16(E)
57 #else /* CONFIG_SMP */
59 .global _irq_handler_0
73 movl $PCR_SELECTOR, %eax
77 call _KiInterruptDispatch
86 .global _irq_handler_1
100 movl $PCR_SELECTOR, %eax
103 pushl $(IRQ_BASE + 1)
104 call _KiInterruptDispatch
113 .global _irq_handler_2
121 movl $0xceafbeef,%eax
127 movl $PCR_SELECTOR, %eax
130 pushl $(IRQ_BASE + 2)
131 call _KiInterruptDispatch
140 .global _irq_handler_3
148 movl $0xceafbeef,%eax
154 movl $PCR_SELECTOR, %eax
157 pushl $(IRQ_BASE + 3)
158 call _KiInterruptDispatch
167 .global _irq_handler_4
175 movl $0xceafbeef,%eax
181 movl $PCR_SELECTOR, %eax
184 pushl $(IRQ_BASE + 4)
185 call _KiInterruptDispatch
194 .global _irq_handler_5
202 movl $0xceafbeef,%eax
208 movl $PCR_SELECTOR, %eax
211 pushl $(IRQ_BASE + 5)
212 call _KiInterruptDispatch
221 .global _irq_handler_6
229 movl $0xceafbeef,%eax
235 movl $PCR_SELECTOR, %eax
238 pushl $(IRQ_BASE + 6)
239 call _KiInterruptDispatch
248 .global _irq_handler_7
256 movl $0xceafbeef,%eax
262 movl $PCR_SELECTOR, %eax
265 pushl $(IRQ_BASE + 7)
266 call _KiInterruptDispatch
275 .global _irq_handler_8
283 movl $0xceafbeef,%eax
289 movl $PCR_SELECTOR, %eax
292 pushl $(IRQ_BASE + 8)
293 call _KiInterruptDispatch
302 .global _irq_handler_9
310 movl $0xceafbeef,%eax
316 movl $PCR_SELECTOR, %eax
319 pushl $(IRQ_BASE + 9)
320 call _KiInterruptDispatch
329 .global _irq_handler_10
337 movl $0xceafbeef,%eax
343 movl $PCR_SELECTOR, %eax
346 pushl $(IRQ_BASE + 10)
347 call _KiInterruptDispatch
356 .global _irq_handler_11
364 movl $0xceafbeef,%eax
370 movl $PCR_SELECTOR, %eax
373 pushl $(IRQ_BASE + 11)
374 call _KiInterruptDispatch
383 .global _irq_handler_12
391 movl $0xceafbeef,%eax
397 movl $PCR_SELECTOR, %eax
400 pushl $(IRQ_BASE + 12)
401 call _KiInterruptDispatch
410 .global _irq_handler_13
418 movl $0xceafbeef,%eax
424 movl $PCR_SELECTOR, %eax
427 pushl $(IRQ_BASE + 13)
428 call _KiInterruptDispatch
437 .global _irq_handler_14
445 movl $0xceafbeef,%eax
451 movl $PCR_SELECTOR, %eax
454 pushl $(IRQ_BASE + 14)
455 call _KiInterruptDispatch
464 .global _irq_handler_15
472 movl $0xceafbeef,%eax
478 movl $PCR_SELECTOR, %eax
481 pushl $(IRQ_BASE + 15)
482 call _KiInterruptDispatch
491 #endif /* CONFIG_SMP */