summaryrefslogtreecommitdiff
path: root/src/kernel/panic.c
diff options
context:
space:
mode:
authorBenji Dial <Benji3.141@gmail.com>2020-08-11 11:33:21 -0400
committerBenji Dial <Benji3.141@gmail.com>2020-08-11 11:33:21 -0400
commit63167f223e1f54910f6b80e698390ee60aec79ee (patch)
tree41844f646bdcb5c9ba241bb5867c5e4f51737d52 /src/kernel/panic.c
parent77d7a284c02bc6b1b3a3a92ad5d957172cee9b81 (diff)
downloadportland-os-63167f223e1f54910f6b80e698390ee60aec79ee.tar.gz
lots of progress
currently, BAR fields of IDE drives are all returning zero, and the ATA read function isn't working. i'm not sure why. i'm going to work on VESA next, and come back to the IDE driver later
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