diff options
author | trimill <trimill@trimillxyz.org> | 2024-02-03 00:37:02 -0500 |
---|---|---|
committer | trimill <trimill@trimillxyz.org> | 2024-02-03 00:45:47 -0500 |
commit | 6d7a563d368241cb074cb356dd2fafa8c6d7115a (patch) | |
tree | 1046e13cc4580d3b75a614652cbdd3ab941e7da2 /src/arch/amd64/panic.c | |
parent | pretty colors (diff) | |
download | corn-6d7a563d368241cb074cb356dd2fafa8c6d7115a.tar.gz corn-6d7a563d368241cb074cb356dd2fafa8c6d7115a.tar.bz2 corn-6d7a563d368241cb074cb356dd2fafa8c6d7115a.zip |
improved debugger, refactored
Diffstat (limited to 'src/arch/amd64/panic.c')
-rw-r--r-- | src/arch/amd64/panic.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/arch/amd64/panic.c b/src/arch/amd64/panic.c index fa750bc..6c35727 100644 --- a/src/arch/amd64/panic.c +++ b/src/arch/amd64/panic.c @@ -1,31 +1,34 @@ #include <panic.h> #include <backtrace.h> #include <stdarg.h> + #include <lib.h> #include "bindings.h" -void _panic_impl(char *line, char *file, char *format, ...) { +_Noreturn void _panic_impl(char *line, char *file, char *format, ...) { cli(); va_list list; - va_start(list, msg); + va_start(list, format); 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(); } } -void _panic_interrupt(void *ip, void *bp, char *format, ...) { - cli(); +_Noreturn void panic_interrupt(void *ip, void *bp, char *msg, ...) { va_list list; va_start(list, msg); - kprintf("\n\n!!! PANIC !!!\n"); - kvprintf(format, list); - kprintf("\n\n"); + cli(); + kputs("\n\n!!! PANIC !!!\n"); + kvprintf(msg, list); + kputs("\n\n"); + log_backtrace_ex(ip, bp); while (1) { halt(); |