diff options
Diffstat (limited to 'kernel/src/cpu/irq_stub.S')
| -rw-r--r-- | kernel/src/cpu/irq_stub.S | 56 |
1 files changed, 23 insertions, 33 deletions
diff --git a/kernel/src/cpu/irq_stub.S b/kernel/src/cpu/irq_stub.S index ee02d3e..3ba4360 100644 --- a/kernel/src/cpu/irq_stub.S +++ b/kernel/src/cpu/irq_stub.S @@ -49,27 +49,41 @@ pop %rax .endm -.macro isr_no_error number -.global isr\number -isr\number: +.macro isrstub pushall - cld + mov 0x88(%rsp), %rsi mov %rsp, panic_rsp - call isr\number\()_handler + cld + call isr_def_handler popall + add $8, %rsp iretq .endm +.macro isr_no_error number +.global isr\number +isr\number: + push $0 + mov $\number, %rdi + isrstub +.endm + .macro isr_error number .global isr\number isr\number: + mov $\number, %rdi + isrstub +.endm + +.macro irq number +.global irq\number +irq\number: pushall - mov 0x88(%rsp), %rdi - cld + mov $\number, %rdi mov %rsp, panic_rsp - call isr\number\()_handler + cld + call irq_def_handler popall - add $8, %rsp iretq .endm @@ -106,30 +120,6 @@ isr_error 29 isr_error 30 isr_no_error 31 -.macro irq number -.global irq\number -irq\number: - pushall - cld - mov %rsp, panic_rsp - call irq\number\()_handler - popall - iretq -.endm - irq 0 irq 1 irq 2 -irq 3 -irq 4 -irq 5 -irq 6 -irq 7 -irq 8 -irq 9 -irq 10 -irq 11 -irq 12 -irq 13 -irq 14 -irq 15 |
