aboutsummaryrefslogtreecommitdiff
path: root/core/kaboom.c
diff options
context:
space:
mode:
Diffstat (limited to 'core/kaboom.c')
-rw-r--r--core/kaboom.c28
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");
+}