aboutsummaryrefslogtreecommitdiff
path: root/machine
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2021-05-05 11:35:17 -0700
committerGitHub <noreply@github.com>2021-05-05 11:35:17 -0700
commite06e62f4a488eabe76b063fd4bfa694f9079bf5e (patch)
tree38760c4d943a7b3181dc3979a1b70906c5c32002 /machine
parentc624e731bd95b61f7f08b885b1897fdb5ccaee00 (diff)
downloadriscv-pk-e06e62f4a488eabe76b063fd4bfa694f9079bf5e.zip
riscv-pk-e06e62f4a488eabe76b063fd4bfa694f9079bf5e.tar.gz
riscv-pk-e06e62f4a488eabe76b063fd4bfa694f9079bf5e.tar.bz2
machine: replace `mbadaddr` with `mtval` (#242)
The LLVM IAS does not support the older name for the `mtval` CSR. This updates the name to the current spelling, which is required to build with the LLVM IAS. This remains compatible with binutils as well.
Diffstat (limited to 'machine')
-rw-r--r--machine/emulation.c2
-rw-r--r--machine/fp_ldst.c2
-rw-r--r--machine/misaligned_ldst.c4
-rw-r--r--machine/mtrap.c4
4 files changed, 6 insertions, 6 deletions
diff --git a/machine/emulation.c b/machine/emulation.c
index c077a53..6b28a2d 100644
--- a/machine/emulation.c
+++ b/machine/emulation.c
@@ -131,7 +131,7 @@ void illegal_insn_trap(uintptr_t* regs, uintptr_t mcause, uintptr_t mepc)
" .popsection");
uintptr_t mstatus = read_csr(mstatus);
- insn_t insn = read_csr(mbadaddr);
+ insn_t insn = read_csr(mtval);
if (unlikely((insn & 3) != 3)) {
if (insn == 0)
diff --git a/machine/fp_ldst.c b/machine/fp_ldst.c
index 45f843b..33c30c1 100644
--- a/machine/fp_ldst.c
+++ b/machine/fp_ldst.c
@@ -5,7 +5,7 @@
#define punt_to_misaligned_handler(align, handler) \
if (addr % (align) != 0) \
- return write_csr(mbadaddr, addr), (handler)(regs, mcause, mepc)
+ return write_csr(mtval, addr), (handler)(regs, mcause, mepc)
DECLARE_EMULATION_FUNC(emulate_float_load)
{
diff --git a/machine/misaligned_ldst.c b/machine/misaligned_ldst.c
index 707de2a..185897d 100644
--- a/machine/misaligned_ldst.c
+++ b/machine/misaligned_ldst.c
@@ -20,7 +20,7 @@ void misaligned_load_trap(uintptr_t* regs, uintptr_t mcause, uintptr_t mepc)
uintptr_t mstatus;
insn_t insn = get_insn(mepc, &mstatus);
uintptr_t npc = mepc + insn_len(insn);
- uintptr_t addr = read_csr(mbadaddr);
+ uintptr_t addr = read_csr(mtval);
int shift = 0, fp = 0, len;
if ((insn & MASK_LW) == MATCH_LW)
@@ -142,7 +142,7 @@ void misaligned_store_trap(uintptr_t* regs, uintptr_t mcause, uintptr_t mepc)
return truly_illegal_insn(regs, mcause, mepc, mstatus, insn);
}
- uintptr_t addr = read_csr(mbadaddr);
+ uintptr_t addr = read_csr(mtval);
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
intptr_t offs = (len == 8? 0 : sizeof(val.intx) - len);
#else
diff --git a/machine/mtrap.c b/machine/mtrap.c
index 1794675..dcff050 100644
--- a/machine/mtrap.c
+++ b/machine/mtrap.c
@@ -196,7 +196,7 @@ void redirect_trap(uintptr_t epc, uintptr_t mstatus, uintptr_t badaddr)
void pmp_trap(uintptr_t* regs, uintptr_t mcause, uintptr_t mepc)
{
- redirect_trap(mepc, read_csr(mstatus), read_csr(mbadaddr));
+ redirect_trap(mepc, read_csr(mstatus), read_csr(mtval));
}
static void machine_page_fault(uintptr_t* regs, uintptr_t mcause, uintptr_t mepc)
@@ -218,7 +218,7 @@ static void machine_page_fault(uintptr_t* regs, uintptr_t mcause, uintptr_t mepc
goto fail;
}
- return redirect_trap(regs[12], regs[13], read_csr(mbadaddr));
+ return redirect_trap(regs[12], regs[13], read_csr(mtval));
}
fail: