summaryrefslogtreecommitdiff
path: root/Kernel/Arch/aarch64
diff options
context:
space:
mode:
authorTimon Kruiper <timonkruiper@gmail.com>2022-05-03 01:39:47 +0200
committerAndreas Kling <kling@serenityos.org>2022-05-03 21:53:36 +0200
commite81e1fa9c87197c643d3af8345af8499ecd3ea02 (patch)
tree15f77e2ca7fc4c946492ca652f68b7fec6325ee5 /Kernel/Arch/aarch64
parente7cf591ec066cc2a8475387dcae62b9b24f78764 (diff)
downloadserenity-e81e1fa9c87197c643d3af8345af8499ecd3ea02.zip
Kernel: Implement __panic() for the aarch64 Kernel
Now that dump_backtrace() works, we can actually print a helpful backtrace when the Kernel panics.
Diffstat (limited to 'Kernel/Arch/aarch64')
-rw-r--r--Kernel/Arch/aarch64/Dummy.cpp10
-rw-r--r--Kernel/Arch/aarch64/Panic.cpp23
2 files changed, 23 insertions, 10 deletions
diff --git a/Kernel/Arch/aarch64/Dummy.cpp b/Kernel/Arch/aarch64/Dummy.cpp
index 9c947b330a..ec9a1b117e 100644
--- a/Kernel/Arch/aarch64/Dummy.cpp
+++ b/Kernel/Arch/aarch64/Dummy.cpp
@@ -24,16 +24,6 @@ READONLY_AFTER_INIT Thread* g_finalizer;
}
-// Panic
-namespace Kernel {
-
-void __panic(char const*, unsigned int, char const*)
-{
- for (;;) { }
-}
-
-}
-
// Random
namespace Kernel {
diff --git a/Kernel/Arch/aarch64/Panic.cpp b/Kernel/Arch/aarch64/Panic.cpp
new file mode 100644
index 0000000000..6f929852ff
--- /dev/null
+++ b/Kernel/Arch/aarch64/Panic.cpp
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2022, Timon Kruiper <timonkruiper@gmail.com>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <Kernel/Arch/Processor.h>
+#include <Kernel/KSyms.h>
+#include <Kernel/Panic.h>
+
+// FIXME: Merge the code in this file with Kernel/Panic.cpp once the proper abstractions are in place.
+
+namespace Kernel {
+
+void __panic(char const* file, unsigned int line, char const* function)
+{
+ critical_dmesgln("at {}:{} in {}", file, line, function);
+ dump_backtrace(PrintToScreen::Yes);
+
+ Processor::halt();
+}
+
+}