diff options
author | trimill <trimill@trimillxyz.org> | 2024-01-30 10:19:33 -0500 |
---|---|---|
committer | trimill <trimill@trimillxyz.org> | 2024-01-30 10:19:33 -0500 |
commit | 6b8f33c22d41488b88fcd35331867858d8f67763 (patch) | |
tree | 4a62ac9c6136a9e9b94cab0b6838add70accfe31 /src/arch/amd64/panic.c | |
parent | refactor, improve exception message (diff) | |
download | corn-6b8f33c22d41488b88fcd35331867858d8f67763.tar.gz corn-6b8f33c22d41488b88fcd35331867858d8f67763.tar.bz2 corn-6b8f33c22d41488b88fcd35331867858d8f67763.zip |
added backtraces
Diffstat (limited to 'src/arch/amd64/panic.c')
-rw-r--r-- | src/arch/amd64/panic.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/arch/amd64/panic.c b/src/arch/amd64/panic.c index c034b90..7f54f98 100644 --- a/src/arch/amd64/panic.c +++ b/src/arch/amd64/panic.c @@ -1,4 +1,5 @@ #include <panic.h> +#include <backtrace.h> #include "serial.h" #include "bindings.h" @@ -12,7 +13,19 @@ _Noreturn void _panic_impl(char *line, char *file, char *msg) { serial_out_str(line); serial_out_str(":\n"); serial_out_str(msg); - serial_out('\n'); + serial_out_str("\n\n"); + log_backtrace(); + while (1) { + halt(); + } +} + +_Noreturn void panic_interrupt(void *ip, void *bp, char *msg) { + cli(); + serial_out_str("\n\n!!! PANIC !!!\n"); + serial_out_str(msg); + serial_out_str("\n\n"); + log_backtrace_ex(ip, bp); while (1) { halt(); } |