diff options
author | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2023-12-10 18:07:35 +0100 |
---|---|---|
committer | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2023-12-10 18:07:35 +0100 |
commit | 4210c4ae384753825e10c5ea4ad1e99e9bba2c1f (patch) | |
tree | 4406242c6b6e6eb4658c1bc3cbe927b378f11dbc /stage3/interrupts.c | |
parent | bc00cb0649167958aed2f481580af3b4f21043b0 (diff) | |
download | cuddles-4210c4ae384753825e10c5ea4ad1e99e9bba2c1f.tar.xz |
handle IRQs
Diffstat (limited to 'stage3/interrupts.c')
-rw-r--r-- | stage3/interrupts.c | 5 |
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); |