From 7e62c50138c43af8f41578c0148762a7bb19a599 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Fri, 2 Feb 2024 12:21:06 -0500 Subject: better fb (wip), format panic, and pci --- src/arch/amd64/panic.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'src/arch/amd64/panic.c') diff --git a/src/arch/amd64/panic.c b/src/arch/amd64/panic.c index 7f54f98..fa750bc 100644 --- a/src/arch/amd64/panic.c +++ b/src/arch/amd64/panic.c @@ -1,30 +1,31 @@ #include #include +#include +#include -#include "serial.h" #include "bindings.h" -_Noreturn void _panic_impl(char *line, char *file, char *msg) { +void _panic_impl(char *line, char *file, char *format, ...) { cli(); - serial_out_str("\n\n!!! PANIC !!!\n"); - serial_out_str("In file "); - serial_out_str(file); - serial_out_str(" at line "); - serial_out_str(line); - serial_out_str(":\n"); - serial_out_str(msg); - serial_out_str("\n\n"); + va_list list; + va_start(list, msg); + kprintf("\n\n!!! PANIC !!!\n"); + kprintf("In file %s at line %s:\n", file, line); + kvprintf(format, list); + kprintf("\n\n"); log_backtrace(); while (1) { halt(); } } -_Noreturn void panic_interrupt(void *ip, void *bp, char *msg) { +void _panic_interrupt(void *ip, void *bp, char *format, ...) { cli(); - serial_out_str("\n\n!!! PANIC !!!\n"); - serial_out_str(msg); - serial_out_str("\n\n"); + va_list list; + va_start(list, msg); + kprintf("\n\n!!! PANIC !!!\n"); + kvprintf(format, list); + kprintf("\n\n"); log_backtrace_ex(ip, bp); while (1) { halt(); -- cgit v1.2.3-freya