diff options
Diffstat (limited to 'core/kaboom.c')
-rw-r--r-- | core/kaboom.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/core/kaboom.c b/core/kaboom.c new file mode 100644 index 0000000..4c150e7 --- /dev/null +++ b/core/kaboom.c @@ -0,0 +1,28 @@ +/* + * kaboom.c + */ + +#include "core.h" + +#if defined(CORE_DEBUG) || defined(DEBUG_PORT) + +#include <dprintf.h> + +__export __noreturn __bad_SEG(const volatile void *p) +{ + dprintf("SEG() passed an invalid pointer: %p\n", p); + kaboom(); +} + +#endif + +#undef kaboom + +__export __noreturn _kaboom(void) +{ + extern void kaboom(void); + call16(kaboom, &zero_regs, NULL); + /* Do this if kaboom somehow returns... */ + for (;;) + asm volatile("hlt"); +} |