diff --git a/src/debug/panic.c b/src/debug/panic.c index b689aa8..2915cf7 100644 --- a/src/debug/panic.c +++ b/src/debug/panic.c @@ -73,35 +73,17 @@ void panic(struct cpu_status_t* ctx, const char* str) CLEAR_INTERRUPTS; panic_count += 1; if (ctx == NULL) { - DEBUG("\x1b[38;5;231m\x1b[48;5;196mKernel panic!!!\x1b[0m Something went horribly wrong! (no cpu ctx)"); - printf("\x1b[38;5;231m\x1b[48;5;27m"); - DIE_DEBUG(str); - printf("\x1b[0m"); - skputc('\r'); - skputc('\n'); - DEBUG("\x1b[38;5;231m\x1b[48;5;196mend Kernel panic\x1b[0m"); - - if (init.terminal) { - printf("\r\n\x1b[38;5;231m\x1b[48;5;196mKernel panic!!!\x1b[48;5;232m Something went horribly wrong! (no cpu ctx)"); - printf("\r\n%s\r\n\x1b[38;5;231mend Kernel panic\x1b[0m", str); - } - + printf("\r\n\x1b[38;5;231m\x1b[48;5;196mKernel panic!!!\x1b[48;5;232m Something went horribly wrong! (no cpu ctx)"); + printf("\r\n%s\r\n\x1b[38;5;231m\x1b[0m", str); debug_stack_trace(100); hcf(); } - DEBUG("\x1b[38;5;231m\x1b[48;5;196mKernel panic!!!\x1b[0m at rip=%p\r\nSomething went horribly wrong! (%s) vect=0x%.2x errcode=0x%x\n\rrax=%p rbx=%p rcx=%p rdx=%p\n\rrsi=%p rdi=%p r8=%p r9=%p\n\rr10=%p r11=%p r12=%p r13=%p\n\rr14=%p r15=%p\n\n\rflags=%p\n\r\x1b[0m", - ctx->iret_rip, - str, - ctx->vector_number, ctx->error_code, ctx->rax, ctx->rbx, ctx->rcx, ctx->rdx, ctx->rsi, ctx->rdi, - ctx->r8, ctx->r9, ctx->r10, ctx->r11, ctx->r12, ctx->r13, ctx->r14, ctx->r15, ctx->iret_flags); - - if (init.terminal) { - printf("\r\n\x1b[38;5;231m\x1b[48;5;196mKernel panic!!!\x1b[48;5;232mat rip=%p\r\nSomething went horribly wrong! (%s) vect=0x%.2x errcode=0x%x\n\rrax=%p rbx=%p rcx=%p rdx=%p\n\rrsi=%p rdi=%p r8=%p r9=%p\n\rr10=%p r11=%p r12=%p r13=%p\n\rr14=%p r15=%p\n\n\rflags=%p ", - ctx->iret_rip, - str, - ctx->vector_number, ctx->error_code, ctx->rax, ctx->rbx, ctx->rcx, ctx->rdx, ctx->rsi, ctx->rdi, - ctx->r8, ctx->r9, ctx->r10, ctx->r11, ctx->r12, ctx->r13, ctx->r14, ctx->r15, ctx->iret_flags); - } + + printf("\r\n\x1b[38;5;231m\x1b[48;5;196mKernel panic!!!\x1b[48;5;232mat rip=%p\r\nSomething went horribly wrong! (%s) vect=0x%.2x errcode=0x%x\n\rrax=%p rbx=%p rcx=%p rdx=%p\n\rrsi=%p rdi=%p r8=%p r9=%p\n\rr10=%p r11=%p r12=%p r13=%p\n\rr14=%p r15=%p\n\n\rflags=%p ", + ctx->iret_rip, + str, + ctx->vector_number, ctx->error_code, ctx->rax, ctx->rbx, ctx->rcx, ctx->rdx, ctx->rsi, ctx->rdi, + ctx->r8, ctx->r9, ctx->r10, ctx->r11, ctx->r12, ctx->r13, ctx->r14, ctx->r15, ctx->iret_flags); read_rflags(ctx->iret_flags); debug_stack_trace(100); diff --git a/src/debug/stacktrace.c b/src/debug/stacktrace.c index 255b3c1..91910e8 100644 --- a/src/debug/stacktrace.c +++ b/src/debug/stacktrace.c @@ -19,10 +19,8 @@ extern struct init_status init; */ void debug_stack_trace(unsigned int max_frames) { - DEBUG("*** begin stack trace ***"); - if (init.terminal) { - printf("\r\n\x1b[48;5;232m\x1b[38;5;231m*** begin stack trace ***\r\n"); - } + printf("\r\n\x1b[48;5;232m\x1b[38;5;231m*** begin stack trace ***\r\n"); + // Thanks GCC :) uintptr_t* rbp = (uintptr_t*)__builtin_frame_address(0); @@ -31,11 +29,7 @@ void debug_stack_trace(unsigned int max_frames) uintptr_t rip = rbp[1]; uintptr_t offset = 0; const char* name = debug_find_symbol(rip, &offset); - DEBUG("[%u] <0x%p> (%s+0x%x)", frame, (void*)rip, name, offset); - - if (init.terminal) { - printf("[%u] <0x%p> (%s+0x%x)\r\n", frame, (void*)rip, name, offset); - } + printf("[%u] <0x%p> (%s+0x%x)\r\n", frame, (void*)rip, name, offset); uintptr_t* next_rbp = (uintptr_t*)rbp[0]; @@ -46,10 +40,8 @@ void debug_stack_trace(unsigned int max_frames) rbp = next_rbp; } - if (init.terminal) { - printf("*** end stack trace ***\r\nHalting system...\x1b[0m"); - } - DEBUG("*** end stack trace ***"); + + printf("*** end stack trace ***\r\n[end Kernel panic]\r\nHalting system...\x1b[0m"); } typedef struct { diff --git a/src/kmain.c b/src/kmain.c index 07a501c..07b0d17 100644 --- a/src/kmain.c +++ b/src/kmain.c @@ -126,6 +126,5 @@ void kmain() scheduler_init(); kputs(PEPPEROS_SPLASH); - idle(); }