summaryrefslogtreecommitdiff
path: root/zephyr/shim/src/panic.c
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/shim/src/panic.c')
-rw-r--r--zephyr/shim/src/panic.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/zephyr/shim/src/panic.c b/zephyr/shim/src/panic.c
index 7fa401c3b1..73889565f9 100644
--- a/zephyr/shim/src/panic.c
+++ b/zephyr/shim/src/panic.c
@@ -25,7 +25,7 @@
* - human readable name
*/
-#ifdef CONFIG_ARM
+#if defined(CONFIG_ARM)
#define PANIC_ARCH PANIC_ARCH_CORTEX_M
#define PANIC_REG_LIST(M) \
M(basic.r0, cm.frame[0], a1) \
@@ -39,6 +39,32 @@
#define PANIC_REG_EXCEPTION(pdata) pdata->cm.regs[1]
#define PANIC_REG_REASON(pdata) pdata->cm.regs[3]
#define PANIC_REG_INFO(pdata) pdata->cm.regs[4]
+#elif defined(CONFIG_RISCV) && !defined(CONFIG_64BIT)
+#define PANIC_ARCH PANIC_ARCH_RISCV_RV32I
+#define PANIC_REG_LIST(M) \
+ M(ra, riscv.regs[1], ra) \
+ M(gp, riscv.regs[2], gp) \
+ M(tp, riscv.regs[3], tp) \
+ M(a0, riscv.regs[4], a0) \
+ M(a1, riscv.regs[5], a1) \
+ M(a2, riscv.regs[6], a2) \
+ M(a3, riscv.regs[7], a3) \
+ M(a4, riscv.regs[8], a4) \
+ M(a5, riscv.regs[9], a5) \
+ M(a6, riscv.regs[10], a6) \
+ M(a7, riscv.regs[11], a7) \
+ M(t0, riscv.regs[12], t0) \
+ M(t1, riscv.regs[13], t1) \
+ M(t2, riscv.regs[14], t2) \
+ M(t3, riscv.regs[15], t3) \
+ M(t4, riscv.regs[16], t4) \
+ M(t5, riscv.regs[17], t5) \
+ M(t6, riscv.regs[18], t6) \
+ M(mepc, riscv.mepc, mepc) \
+ M(mstatus, riscv.mcause, mstatus)
+#define PANIC_REG_EXCEPTION(pdata) (pdata->riscv.mcause)
+#define PANIC_REG_REASON(pdata) (pdata->riscv.regs[11])
+#define PANIC_REG_INFO(pdata) (pdata->riscv.regs[10])
#else
/* Not implemented for this arch */
#define PANIC_ARCH 0