%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