%macro IRQ 2 | |
global irq%1 | |
irq%1: | |
cli | |
push byte 0 ; push a dummy error code | |
push byte %2 ; push the IRQ number | |
jmp irq_common_stub | |
%endmacro | |
extern irq_handler | |
irq_common_stub: | |
pusha ; Pushes edi,esi,ebp,esp,ebx,edx,ecx,eax | |
mov ax, ds ; Lower 16-bits of eax = ds. | |
push eax ; save the data segment descriptor | |
mov ax, 0x10 ; load the kernel data segment descriptor | |
mov edx, eax | |
call irq_handler | |
%assign i 0 | |
%rep 8 | |
ISR_NOERRCODE i | |
%assign i i+1 | |
%endrep | |
ISR_NOERRCODE 9 |