summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/ivt.s
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/ivt.s')
-rw-r--r--arch/x86_64/ivt.s12
1 files changed, 5 insertions, 7 deletions
diff --git a/arch/x86_64/ivt.s b/arch/x86_64/ivt.s
index d2d504b..0005686 100644
--- a/arch/x86_64/ivt.s
+++ b/arch/x86_64/ivt.s
@@ -18,6 +18,8 @@ __isr_head:
call isr_handle
popall
+
+ addq $16, %rsp
iretq
.extern __isr_err
@@ -26,12 +28,7 @@ __isr_head:
.macro defn_isr_err num:req
.type __isr\num @function
__isr\num:
- pushq %rbx
- movq 8(%rsp), %rbx
- movq %rbx, __isr_err
- popq %rbx
- addq $8, %rsp
- movq $\num, __isr_num
+ pushq $\num
jmp __isr_head
.size __isr\num, . - __isr\num
.endm
@@ -39,7 +36,8 @@ __isr\num:
.macro defn_isr num:req
.type __isr\num @function
__isr\num:
- movq $\num, __isr_num
+ pushq $0
+ pushq $\num
jmp __isr_head
.size __isr\num, . - __isr\num
.endm