From 2296179bf8885f6e3c1333ee48f5ef81767b6736 Mon Sep 17 00:00:00 2001 From: Liam Kerr Date: Mon, 9 Feb 2026 02:57:04 +0000 Subject: [PATCH] Move the trap to panic.c --- src/kernel/kernel.c | 2 +- src/kernel/panic.c | 23 +++++++++++++++++++++++ src/kernel/trap.c | 27 --------------------------- 3 files changed, 24 insertions(+), 28 deletions(-) delete mode 100644 src/kernel/trap.c diff --git a/src/kernel/kernel.c b/src/kernel/kernel.c index 0593fab..eb0534f 100644 --- a/src/kernel/kernel.c +++ b/src/kernel/kernel.c @@ -6,7 +6,7 @@ #include void kmain() { - kprintf("Hello, from %s v%f!" , "SquidgeOS", 0.5); + kprintf("Hello, from %s!" , "SquidgeOS"); kputs("-------------------"); knewline(); page_init(); diff --git a/src/kernel/panic.c b/src/kernel/panic.c index 03d49c7..3d5ea73 100644 --- a/src/kernel/panic.c +++ b/src/kernel/panic.c @@ -24,3 +24,26 @@ void kpanic_force() { __asm__ volatile("wfi"); } } + +void handle_trap() { + kprint("\n!!! HARDWARE EXCEPTION DETECTED !!!\n"); + + // Read the 'mcause' register to see WHY we trapped + unsigned long cause; + __asm__ volatile("csrr %0, mcause" : "=r"(cause)); + + switch(cause) { + case 0: kprint("Reason: Instruction Address Misaligned\n"); break; + case 1: kprint("Reason: Instruction Access Fault\n"); break; + case 2: kprint("Reason: Illegal Instruction\n"); break; + case 3: kprint("Reason: Breakpoint (ebreak)\n"); break; + case 4: kprint("Reason: Load Address Misaligned\n"); break; + case 5: kprint("Reason: Load Access Fault\n"); break; + case 6: kprint("Reason: Store/AMO Address Misaligned\n"); break; + case 7: kprint("Reason: Store/AMO Access Fault\n"); break; + default: + kprintf("Reason: Unknown Exception Code %d\n", cause); + } + + poweroff(); +} \ No newline at end of file diff --git a/src/kernel/trap.c b/src/kernel/trap.c deleted file mode 100644 index 0705141..0000000 --- a/src/kernel/trap.c +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include -#include -#include - -void handle_trap() { - kprint("\n!!! HARDWARE EXCEPTION DETECTED !!!\n"); - - // Read the 'mcause' register to see WHY we trapped - unsigned long cause; - __asm__ volatile("csrr %0, mcause" : "=r"(cause)); - - switch(cause) { - case 0: kprint("Reason: Instruction Address Misaligned\n"); break; - case 1: kprint("Reason: Instruction Access Fault\n"); break; - case 2: kprint("Reason: Illegal Instruction\n"); break; - case 3: kprint("Reason: Breakpoint (ebreak)\n"); break; - case 4: kprint("Reason: Load Address Misaligned\n"); break; - case 5: kprint("Reason: Load Access Fault\n"); break; - case 6: kprint("Reason: Store/AMO Address Misaligned\n"); break; - case 7: kprint("Reason: Store/AMO Access Fault\n"); break; - default: - kprintf("Reason: Unknown Exception Code %d\n", cause); - } - - poweroff(); -} \ No newline at end of file