diff options
author | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2024-01-09 22:00:10 +0100 |
---|---|---|
committer | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2024-01-09 22:00:10 +0100 |
commit | 0d9286a860ff888dbb35fa6b92703496af3abecf (patch) | |
tree | a40596ae85efee3ee8b33fb9241200932f933290 /stage3/interrupts.c | |
parent | d8d31c16138a4d6dc1ff3d33b3172c151c221767 (diff) | |
download | cuddles-0d9286a860ff888dbb35fa6b92703496af3abecf.tar.xz |
refactor heap code and add heap debugging
Diffstat (limited to 'stage3/interrupts.c')
-rw-r--r-- | stage3/interrupts.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/stage3/interrupts.c b/stage3/interrupts.c index 9c7bcc8..a13bd98 100644 --- a/stage3/interrupts.c +++ b/stage3/interrupts.c @@ -9,10 +9,14 @@ #include "string.h" #include "debug.h" +bool in_isr = false; + extern u64 idt_entries[256]; // isr.asm void interrupt_handler(interrupt_frame *frame) { + in_isr = true; + if (frame->which < 32) { debug_exception(frame); } else if (frame->which-32 < 16) { @@ -43,6 +47,16 @@ void interrupt_handler(interrupt_frame *frame) ack_irq(irq); } + + in_isr = false; +} + +void interrupts_unsafe(const char *func) +{ + if (in_isr) { + print(str_intro((char *) func)); + panic(S(" called in ISR\n")); + } } typedef struct { |