From 2745d3139cefd1fc2b97bb9382188c59f15eced9 Mon Sep 17 00:00:00 2001 From: Ryan Buchner Date: Mon, 17 Apr 2023 20:22:59 -0700 Subject: Use access_info within load_slow_path rather than xlate_flags Fixes case 2 from https://github.com/riscv-software-src/riscv-isa-sim/issues/872 --- riscv/mmu.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/riscv/mmu.cc b/riscv/mmu.cc index db6c31e..be986fe 100644 --- a/riscv/mmu.cc +++ b/riscv/mmu.cc @@ -230,11 +230,11 @@ void mmu_t::load_slow_path(reg_t addr, reg_t len, uint8_t* bytes, xlate_flags_t if ((addr & (len - 1)) == 0) { load_slow_path_intrapage(len, bytes, access_info); } else { - bool gva = ((proc) ? proc->state.v : false) || xlate_flags.forced_virt; + bool gva = access_info.effective_virt; if (!is_misaligned_enabled()) throw trap_load_address_misaligned(gva, addr, 0, 0); - if (xlate_flags.lr) + if (access_info.flags.lr) throw trap_load_access_fault(gva, addr, 0, 0); reg_t len_page0 = std::min(len, PGSIZE - addr % PGSIZE); -- cgit v1.1