summaryrefslogtreecommitdiff
path: root/kernel/src/cpu/irq_stub.S
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksav013@gmail.com>2023-01-28 04:11:57 +0100
committerAleksa Vuckovic <aleksav013@gmail.com>2023-01-28 04:11:57 +0100
commitc53c696286821ad13ab9ec61ed011cfe90e193c0 (patch)
tree6f1da82a70eac1f0e3d2f095dc59b8c5a4ed573e /kernel/src/cpu/irq_stub.S
parent3a63d67c42e2d71efafb8a30f08758bf0a180c39 (diff)
PIC -> APIC, removing boilerplate irq_handlers
Diffstat (limited to 'kernel/src/cpu/irq_stub.S')
-rw-r--r--kernel/src/cpu/irq_stub.S56
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