X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/9406e904ddad5db2ba2dd550e21bbb224899fd79..80890b99fec2630ef0a1a0805d894c3d86c16506:/lunaix-os/kernel/asm/x86/interrupt.S diff --git a/lunaix-os/kernel/asm/x86/interrupt.S b/lunaix-os/kernel/asm/x86/interrupt.S index 5f3d333..f05c3b8 100644 --- a/lunaix-os/kernel/asm/x86/interrupt.S +++ b/lunaix-os/kernel/asm/x86/interrupt.S @@ -1,3 +1,6 @@ +#define __ASM__ +#include + .macro isr_template vector, no_error_code=1 .global _asm_isr\vector .type _asm_isr\vector, @function @@ -10,19 +13,46 @@ .endm .section .text - isr_template 0 - isr_template 13, no_error_code=0 + isr_template FAULT_DIVISION_ERROR + isr_template FAULT_GENERAL_PROTECTION, no_error_code=0 + isr_template FAULT_PAGE_FAULT, no_error_code=0 + + isr_template LUNAIX_SYS_PANIC + + isr_template APIC_ERROR_IV + isr_template APIC_LINT0_IV + isr_template APIC_TIMER_IV + isr_template APIC_SPIV_IV + isr_template RTC_TIMER_IV + isr_template PC_KBD_IV interrupt_wrapper: + pushl %esp + pushl %esi + pushl %ebp + pushl %edi + pushl %edx + pushl %ecx + pushl %ebx + pushl %eax movl %esp, %eax andl $0xfffffff0, %esp subl $16, %esp movl %eax, (%esp) - call interrupt_handler - pop %eax - movl %eax, %esp + call intr_handler + popl %esp + + popl %eax + popl %ebx + popl %ecx + popl %edx + popl %edi + popl %ebp + popl %esi + popl %esp + addl $8, %esp iret \ No newline at end of file