:: commit 4925f7e3dde2a9555332acdef03501ce2f2517e0

mintsuki <mintsuki@protonmail.com> — 2021-10-22 10:17

parents: f061965f69

idt: Move dummy_isr() to its own assembly file

diff --git a/stage23/sys/dummy_isr.asm b/stage23/sys/dummy_isr.asm
new file mode 100644
index 00000000..48cc17d3
--- /dev/null
+++ b/stage23/sys/dummy_isr.asm
@@ -0,0 +1,8 @@
+extern lapic_eoi
+
+global dummy_isr
+dummy_isr:
+    pusha
+    call lapic_eoi
+    popa
+    iretd
diff --git a/stage23/sys/dummy_isr.asm32 b/stage23/sys/dummy_isr.asm32
new file mode 120000
index 00000000..4d563df2
--- /dev/null
+++ b/stage23/sys/dummy_isr.asm32
@@ -0,0 +1 @@
+dummy_isr.asm
\ No newline at end of file
diff --git a/stage23/sys/dummy_isr.asm64 b/stage23/sys/dummy_isr.asm64
new file mode 100644
index 00000000..fd3f0518
--- /dev/null
+++ b/stage23/sys/dummy_isr.asm64
@@ -0,0 +1,24 @@
+extern lapic_eoi
+
+global dummy_isr
+dummy_isr:
+    push rax
+    push rcx
+    push rdx
+    push rsi
+    push rdi
+    push r8
+    push r9
+    push r10
+    push r11
+    call lapic_eoi
+    pop r11
+    pop r10
+    pop r9
+    pop r8
+    pop rdi
+    pop rsi
+    pop rdx
+    pop rcx
+    pop rax
+    iretq
diff --git a/stage23/sys/idt.c b/stage23/sys/idt.c
index 9b12b58d..b68657ff 100644
--- a/stage23/sys/idt.c
+++ b/stage23/sys/idt.c
@@ -9,11 +9,7 @@
 
 static struct idt_entry *dummy_idt = NULL;
 
-__attribute__((interrupt))
-static void dummy_isr(void *p) {
-    (void)p;
-    lapic_eoi();
-}
+void dummy_isr(void);
 
 void init_flush_irqs(void) {
     size_t dummy_idt_size = 256 * sizeof(struct idt_entry);
tab: 248 wrap: offon