diff options
author | trimill <trimill@trimillxyz.org> | 2024-01-29 16:27:03 -0500 |
---|---|---|
committer | trimill <trimill@trimillxyz.org> | 2024-01-29 16:27:03 -0500 |
commit | e57c64c0e96228baf69b1c43a065c1170fabd18e (patch) | |
tree | f3f8f40f09086d197beefe9571e329f2785e918b | |
parent | fix old testing code (diff) | |
download | corn-e57c64c0e96228baf69b1c43a065c1170fabd18e.tar.gz corn-e57c64c0e96228baf69b1c43a065c1170fabd18e.tar.bz2 corn-e57c64c0e96228baf69b1c43a065c1170fabd18e.zip |
panic
Diffstat (limited to '')
-rw-r--r-- | include/panic.h | 8 | ||||
-rw-r--r-- | src/arch/amd64/panic.c | 18 |
2 files changed, 26 insertions, 0 deletions
diff --git a/include/panic.h b/include/panic.h new file mode 100644 index 0000000..21715fd --- /dev/null +++ b/include/panic.h @@ -0,0 +1,8 @@ +#pragma once + +#define _PANIC_STR(x) _PANIC_STR2(x) +#define _PANIC_STR2(x) #x + +#define panic(msg) _panic_impl(_PANIC_STR(__LINE__), __FILE__, msg) + +_Noreturn void _panic_impl(char *line, char *file, char *msg); diff --git a/src/arch/amd64/panic.c b/src/arch/amd64/panic.c new file mode 100644 index 0000000..227ecce --- /dev/null +++ b/src/arch/amd64/panic.c @@ -0,0 +1,18 @@ +#include <panic.h> + +#include "serial.h" +#include "bindings.h" + +_Noreturn void _panic_impl(char *line, char *file, char *msg) { + cli(); + serial_out_str("\n\n!!! PANIC !!!\n"); + serial_out_str(msg); + serial_out_str("\nin file "); + serial_out_str(file); + serial_out_str(" at line "); + serial_out_str(line); + serial_out('\n'); + while (1) { + halt(); + } +} |