.section .text .macro isr_err_stub num .global isr_stub_\num .type isr_stub_\num, @function isr_stub_\num: cli pushl $\num jmp isr_frame_asm .endm .macro isr_no_err_stub num .global isr_stub_\num .type isr_stub_\num, @function isr_stub_\num: cli pushl $0 pushl $\num jmp isr_frame_asm .endm .macro irq_stub num .global irq_stub_\num .type irq_stub_\num, @function irq_stub_\num: cli pushl $0 pushl $\num jmp isr_frame_asm .endm .global syscall_stub syscall_stub: pushl $0 pushl $0x80 jmp isr_frame_asm isr_frame_asm: pushl %eax pushl %ebx pushl %ecx pushl %edx pushl %esi pushl %edi movl %cr0, %eax pushl %eax movl %cr2, %eax pushl %eax movl %cr3, %eax pushl %eax movl %cr4, %eax pushl %eax lea -8(%esp), %edi pushl %edi call interrupt_handler popl %eax movl %eax, %cr4 popl %eax movl %eax, %cr3 popl %eax movl %eax, %cr2 popl %eax movl %eax, %cr0 popl %edi popl %esi popl %edx popl %ecx popl %ebx popl %eax addl $4, %esp iret isr_no_err_stub 0 isr_no_err_stub 1 isr_no_err_stub 2 isr_no_err_stub 3 isr_no_err_stub 4 isr_no_err_stub 5 isr_no_err_stub 6 isr_no_err_stub 7 isr_err_stub 8 isr_no_err_stub 9 isr_err_stub 10 isr_err_stub 11 isr_err_stub 12 isr_err_stub 13 isr_err_stub 14 isr_no_err_stub 15 isr_no_err_stub 16 isr_err_stub 17 isr_no_err_stub 18 isr_no_err_stub 19 isr_no_err_stub 20 isr_err_stub 21 isr_no_err_stub 22 isr_no_err_stub 23 isr_no_err_stub 24 isr_no_err_stub 25 isr_no_err_stub 26 isr_no_err_stub 27 isr_no_err_stub 28 isr_err_stub 29 isr_err_stub 30 isr_no_err_stub 31