summaryrefslogtreecommitdiff
path: root/stage3/interrupts.c
diff options
context:
space:
mode:
authorLizzy Fleckenstein <lizzy@vlhl.dev>2023-12-10 18:07:35 +0100
committerLizzy Fleckenstein <lizzy@vlhl.dev>2023-12-10 18:07:35 +0100
commit4210c4ae384753825e10c5ea4ad1e99e9bba2c1f (patch)
tree4406242c6b6e6eb4658c1bc3cbe927b378f11dbc /stage3/interrupts.c
parentbc00cb0649167958aed2f481580af3b4f21043b0 (diff)
downloadcuddles-4210c4ae384753825e10c5ea4ad1e99e9bba2c1f.tar.xz
handle IRQs
Diffstat (limited to 'stage3/interrupts.c')
-rw-r--r--stage3/interrupts.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/stage3/interrupts.c b/stage3/interrupts.c
index fa4e59d..e7b819e 100644
--- a/stage3/interrupts.c
+++ b/stage3/interrupts.c
@@ -2,6 +2,7 @@
#include "halt.h"
#include "font.h"
#include "heap.h"
+#include "pic.h"
extern u64 idt_entries[256]; // isr.asm
@@ -91,6 +92,10 @@ void interrupt_handler(interrupt_frame *frame)
dump_frame(frame);
halt();
+ } else if (frame->which-32 < 16) {
+ u64 irq = frame->which-32;
+ print("IRQ "); print_num(irq, 10, 0); print("\n");
+ ack_irq(irq);
} else {
print("Spurious Interrupt "); print_num(frame->which, 10, 0); print("\n");
dump_frame(frame);