Unifying the Lunaix's Physical Memory Model (#28)
[lunaix-os.git] / lunaix-os / kernel / debug / failsafe.c
diff --git a/lunaix-os/kernel/debug/failsafe.c b/lunaix-os/kernel/debug/failsafe.c
new file mode 100644 (file)
index 0000000..5fdbc5d
--- /dev/null
@@ -0,0 +1,24 @@
+#include <lunaix/failsafe.h>
+#include <lunaix/spike.h>
+#include <lunaix/syslog.h>
+#include <lunaix/trace.h>
+#include <lunaix/sched.h>
+
+LOG_MODULE("NMM")
+
+void
+do_failsafe_unrecoverable(ptr_t frame_link, ptr_t stack_link)
+{
+    ERROR("diagnositic mode");
+
+    ERROR("check: init stack: %s", 
+            check_bootstack_sanity() ? "ok" : "smashing");
+
+    // TODO ...check other invariants
+
+    ERROR("non recoverable: Nightmare Moon arrival.");
+
+    trace_printstack();
+
+    spin();
+}
\ No newline at end of file