diff options
| author | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-02-25 05:43:37 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-02-25 05:47:59 +0100 |
| commit | aaa23fffd02fb49cdbc56a480dbb5a8fa95bff38 (patch) | |
| tree | cefd59478bb62a2edca523adc9f10cec605f57b0 /kernel/src/cpu/irq_stub.S | |
| parent | 4931f266a72dccfb439badfa1070563003c80ce3 (diff) | |
x86_64_regs.S: (push/pop)_(callee/caller)_regs
Diffstat (limited to 'kernel/src/cpu/irq_stub.S')
| -rw-r--r-- | kernel/src/cpu/irq_stub.S | 60 |
1 files changed, 7 insertions, 53 deletions
diff --git a/kernel/src/cpu/irq_stub.S b/kernel/src/cpu/irq_stub.S index 3ba4360..33d87e1 100644 --- a/kernel/src/cpu/irq_stub.S +++ b/kernel/src/cpu/irq_stub.S @@ -1,61 +1,15 @@ .extern panic_rsp -.macro pushall - push %rax - push %rbx - push %rcx - push %rdx - push %rsi - push %rdi - push %r8 - push %r9 - push %r10 - push %r11 - push %r12 - push %r13 - push %r14 - push %r15 - mov %ds, %ax - push %rax - mov %es, %ax - push %rax - mov %ss, %ax - push %rax - mov $0x10, %ax - mov %ax, %ds - mov %ax, %es - mov 0x80(%rsp), %rax -.endm - -.macro popall - pop %rax - pop %rax - mov %ax, %es - pop %rax - mov %ax, %ds - pop %r15 - pop %r14 - pop %r13 - pop %r12 - pop %r11 - pop %r10 - pop %r9 - pop %r8 - pop %rdi - pop %rsi - pop %rdx - pop %rcx - pop %rbx - pop %rax -.endm +#include "x86_64_regs.S" .macro isrstub - pushall - mov 0x88(%rsp), %rsi + push_caller_saved + /* get error code from stack */ + mov 0x50(%rsp), %rsi mov %rsp, panic_rsp cld call isr_def_handler - popall + pop_caller_saved add $8, %rsp iretq .endm @@ -78,12 +32,12 @@ isr\number: .macro irq number .global irq\number irq\number: - pushall + push_caller_saved mov $\number, %rdi mov %rsp, panic_rsp cld call irq_def_handler - popall + pop_caller_saved iretq .endm |
