From d36487d9fd2c19b54a3b97bdf3562a17184711fe Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Tue, 29 Nov 2022 11:55:47 +0100 Subject: kernel panic --- kernel/src/check/panic.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'kernel/src/check/panic.c') diff --git a/kernel/src/check/panic.c b/kernel/src/check/panic.c index 0480633..c618c40 100644 --- a/kernel/src/check/panic.c +++ b/kernel/src/check/panic.c @@ -1,10 +1,43 @@ #include #include +#include + +uint64_t panic_rsp; __attribute__((noreturn)) -void panic() +void panic(const char *s, ...) { - printf("PANIC MODE ENETERED"); + set_color(&main_fb, RED, BLACK); + printf("KERNEL PANIC\n"); +// set_color(&main_fb, WHITE, BLACK); + va_list list; + va_start(list, s); + vprintf(s, list); + va_end(list); + + printf("regs:\n"); + uint64_t i = 0; + printf("rflags: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("r11: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("r10: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("r9: 0x%x\n", *((uint64_t*)panic_rsp + i++)); + printf("r8: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("rdi: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("rsi: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("rdx: 0x%x\n", *((uint64_t*)panic_rsp + i++)); + printf("rcx: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("rax: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("exception: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("rip: 0x%x\n", *((uint64_t*)panic_rsp + i++)); + printf("cs: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("rflags: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("rsp: 0x%x; ", *((uint64_t*)panic_rsp + i++)); + printf("ss: 0x%x\n", *((uint64_t*)panic_rsp + i++)); + printf("1: 0x%x\n", *((uint64_t*)panic_rsp + i++)); + printf("1: 0x%x\n", *((uint64_t*)panic_rsp + i++)); + printf("1: 0x%x\n", *((uint64_t*)panic_rsp + i++)); + printf("1: 0x%x\n", *((uint64_t*)panic_rsp + i++)); + __asm__ volatile ("cli;"); for(;;) { __asm__ volatile ("hlt;"); -- cgit v1.2.3