summaryrefslogtreecommitdiff
path: root/core/nds32/panic.c
diff options
context:
space:
mode:
Diffstat (limited to 'core/nds32/panic.c')
-rw-r--r--core/nds32/panic.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/core/nds32/panic.c b/core/nds32/panic.c
new file mode 100644
index 0000000000..ebdffb32ea
--- /dev/null
+++ b/core/nds32/panic.c
@@ -0,0 +1,42 @@
+/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "common.h"
+#include "console.h"
+#include "cpu.h"
+#include "panic.h"
+#include "printf.h"
+#include "system.h"
+#include "task.h"
+#include "timer.h"
+#include "uart.h"
+#include "util.h"
+
+void report_panic(uint32_t *regs, uint32_t itype)
+{
+ panic_printf("=== EXCEP: ITYPE=%x ===\n", itype);
+ panic_printf("R0 %08x R1 %08x R2 %08x R3 %08x\n",
+ regs[0], regs[1], regs[2], regs[3]);
+ panic_printf("R4 %08x R5 %08x R6 %08x R7 %08x\n",
+ regs[4], regs[5], regs[6], regs[7]);
+ panic_printf("R8 %08x R9 %08x R10 %08x R15 %08x\n",
+ regs[8], regs[9], regs[10], regs[11]);
+ panic_printf("FP %08x GP %08x LP %08x SP %08x\n",
+ regs[12], regs[13], regs[14], regs[15]);
+ panic_printf("IPC %08x IPSW %05x\n", regs[16], regs[17]);
+ if ((regs[17] & PSW_INTL_MASK) == (2 << PSW_INTL_SHIFT)) {
+ /* 2nd level exception */
+ uint32_t oipc;
+
+ asm volatile("mfsr %0, $OIPC" : "=r"(oipc));
+ panic_printf("OIPC %08x\n", oipc);
+ }
+
+ panic_reboot();
+}
+
+void panic_data_print(const struct panic_data *pdata)
+{
+}