aboutsummaryrefslogtreecommitdiff
path: root/machine
diff options
context:
space:
mode:
Diffstat (limited to 'machine')
-rw-r--r--machine/misaligned_ldst.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/machine/misaligned_ldst.c b/machine/misaligned_ldst.c
index a44195b..a187d25 100644
--- a/machine/misaligned_ldst.c
+++ b/machine/misaligned_ldst.c
@@ -64,8 +64,11 @@ void misaligned_load_trap(uintptr_t* regs, uintptr_t mcause, uintptr_t mepc)
# endif
# endif
#endif
- else
+ else {
+ mcause = CAUSE_LOAD_ACCESS;
+ write_csr(mcause, mcause);
return truly_illegal_insn(regs, mcause, mepc, mstatus, insn);
+ }
val.int64 = 0;
for (intptr_t i = 0; i < len; i++)
@@ -128,8 +131,11 @@ void misaligned_store_trap(uintptr_t* regs, uintptr_t mcause, uintptr_t mepc)
# endif
# endif
#endif
- else
+ else {
+ mcause = CAUSE_STORE_ACCESS;
+ write_csr(mcause, mcause);
return truly_illegal_insn(regs, mcause, mepc, mstatus, insn);
+ }
uintptr_t addr = read_csr(mbadaddr);
for (int i = 0; i < len; i++)