summaryrefslogtreecommitdiff
path: root/src/kernel/panic.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/panic.c')
-rw-r--r--src/kernel/panic.c27
1 files changed, 5 insertions, 22 deletions
diff --git a/src/kernel/panic.c b/src/kernel/panic.c
index a463a2a..93944ff 100644
--- a/src/kernel/panic.c
+++ b/src/kernel/panic.c
@@ -2,31 +2,14 @@
#include "vga.h"
#include "serial.h"
#include "util.h"
+#include "panic.h"
-void halt() {
- vga_printsz("\n\nHalting...");
- while (1)
- asm volatile ("hlt");
-}
-
-void panic(uint8_t *message) {
- uint32_t frame;
- asm (
- "movl %%ebp, %0"
- : "=r" (frame));
+void panic(char *message) {
vga_set_color(0x4f);
vga_blank();
vga_printsz("Kernel panic: ");
vga_printsz(message);
- vga_printsz("\n\nStack trace:");
- uint8_t stb[6];
- while (1) {
- uint32_t ip = *((uint32_t *)frame + 1);
- if (!ip)
- halt();
- vga_printsz("\n 0x");
- u16_hex(ip - 0x30000 - 5, stb);//assumes would return to just after a call instruction
- vga_printsz(stb);
- frame = *(uint32_t *)frame;
- }
+ vga_printsz("\nHalting.");
+ while (1)
+ asm volatile ("hlt");
} \ No newline at end of file