summaryrefslogtreecommitdiff
path: root/arch/i386/boot/isr.s
diff options
context:
space:
mode:
Diffstat (limited to 'arch/i386/boot/isr.s')
-rw-r--r--arch/i386/boot/isr.s8
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/i386/boot/isr.s b/arch/i386/boot/isr.s
index 5bd63ed..55db35e 100644
--- a/arch/i386/boot/isr.s
+++ b/arch/i386/boot/isr.s
@@ -30,6 +30,7 @@ irq_stub_\num:
.global syscall_stub
syscall_stub:
+ cli
pushl $0
pushl $0x80
jmp isr_frame_asm
@@ -41,7 +42,6 @@ isr_frame_asm:
pushl %edx
pushl %esi
pushl %edi
- pushl %esp
movl %cr0, %eax
pushl %eax
@@ -52,6 +52,10 @@ isr_frame_asm:
movl %cr4, %eax
pushl %eax
+ pushl %esp
+ call set_kernel_esp
+ addl $4, %esp
+
cld
call interrupt_handler
@@ -64,13 +68,13 @@ isr_frame_asm:
popl %eax
movl %eax, %cr0
- popl %esp
popl %edi
popl %esi
popl %edx
popl %ecx
popl %ebx
popl %eax
+ addl $8, %esp
iret