summaryrefslogtreecommitdiff
path: root/src/arch/amd64/panic.c
diff options
context:
space:
mode:
authortrimill <trimill@trimillxyz.org>2024-02-03 00:37:02 -0500
committertrimill <trimill@trimillxyz.org>2024-02-03 00:45:47 -0500
commit6d7a563d368241cb074cb356dd2fafa8c6d7115a (patch)
tree1046e13cc4580d3b75a614652cbdd3ab941e7da2 /src/arch/amd64/panic.c
parentpretty colors (diff)
downloadcorn-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.c17
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();