diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2021-05-05 11:35:17 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-05 11:35:17 -0700 |
commit | e06e62f4a488eabe76b063fd4bfa694f9079bf5e (patch) | |
tree | 38760c4d943a7b3181dc3979a1b70906c5c32002 /machine | |
parent | c624e731bd95b61f7f08b885b1897fdb5ccaee00 (diff) | |
download | riscv-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.c | 2 | ||||
-rw-r--r-- | machine/fp_ldst.c | 2 | ||||
-rw-r--r-- | machine/misaligned_ldst.c | 4 | ||||
-rw-r--r-- | machine/mtrap.c | 4 |
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: |