diff options
| author | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-11-29 16:09:32 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-11-29 19:23:51 +0100 |
| commit | 9b3dd99abc763f5e2039933eda510ec62d395f8a (patch) | |
| tree | 8db0b52f5fcb6a4572d8d2612d7eb94c1f4f2fb1 /kernel/src/cpu | |
| parent | d36487d9fd2c19b54a3b97bdf3562a17184711fe (diff) | |
pushing all regs in irq_handler
Diffstat (limited to 'kernel/src/cpu')
| -rw-r--r-- | kernel/src/cpu/irq_stub.S | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/kernel/src/cpu/irq_stub.S b/kernel/src/cpu/irq_stub.S index f8a05b6..ee02d3e 100644 --- a/kernel/src/cpu/irq_stub.S +++ b/kernel/src/cpu/irq_stub.S @@ -2,6 +2,7 @@ .macro pushall push %rax + push %rbx push %rcx push %rdx push %rsi @@ -10,11 +11,32 @@ push %r9 push %r10 push %r11 - pushfq + 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 - popfq + 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 @@ -23,6 +45,7 @@ pop %rsi pop %rdx pop %rcx + pop %rbx pop %rax .endm @@ -41,7 +64,7 @@ isr\number: .global isr\number isr\number: pushall - mov 0x50(%rsp), %rdi + mov 0x88(%rsp), %rdi cld mov %rsp, panic_rsp call isr\number\()_handler |
