From 44c83df675358b8aa8473710613d5673471f362e Mon Sep 17 00:00:00 2001 From: Scott Johnson Date: Thu, 4 Mar 2021 15:22:35 -0800 Subject: Convert mmu_t::walk to use sstatus Part of step 2 of plan described in csrs.h. --- riscv/mmu.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'riscv/mmu.cc') diff --git a/riscv/mmu.cc b/riscv/mmu.cc index 3bfb630..c214884 100644 --- a/riscv/mmu.cc +++ b/riscv/mmu.cc @@ -347,10 +347,10 @@ reg_t mmu_t::walk(reg_t addr, access_type type, reg_t mode, bool virt, bool hlvx return s2xlate(addr, addr & ((reg_t(2) << (proc->xlen-1))-1), type, type, virt, hlvx) & ~page_mask; // zero-extend from xlen bool s_mode = mode == PRV_S; - reg_t arch_vsstatus = proc->state.v ? proc->state.mstatus : proc->state.vsstatus->read(); - reg_t arch_mstatus = proc->state.v ? proc->state.vsstatus->read() : proc->state.mstatus; - bool sum = (virt ? arch_vsstatus : arch_mstatus) & MSTATUS_SUM; - bool mxr = (arch_mstatus | (virt ? arch_vsstatus : 0)) & MSTATUS_MXR; + reg_t arch_vsstatus = proc->state.v ? proc->state.sstatus->read() : proc->state.vsstatus->read(); + reg_t arch_sstatus = proc->state.v ? proc->state.vsstatus->read() : proc->state.sstatus->read(); + bool sum = (virt ? arch_vsstatus : arch_sstatus) & MSTATUS_SUM; + bool mxr = (arch_sstatus | (virt ? arch_vsstatus : 0)) & MSTATUS_MXR; // verify bits xlen-1:va_bits-1 are all equal int va_bits = PGSHIFT + vm.levels * vm.idxbits; -- cgit v1.1