aboutsummaryrefslogtreecommitdiff
path: root/riscv/mmu.cc
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2016-02-19 13:05:50 -0800
committerAndrew Waterman <waterman@cs.berkeley.edu>2016-03-02 12:15:25 -0800
commit48e4425644c9984ea73df6633f13c8ff60d44d4d (patch)
tree4c5030f66acd1d7d2ae787b021235a11524a5fb1 /riscv/mmu.cc
parent82b22f61c7e52eff8285d123a8cf9fd59df31425 (diff)
downloadspike-48e4425644c9984ea73df6633f13c8ff60d44d4d.zip
spike-48e4425644c9984ea73df6633f13c8ff60d44d4d.tar.gz
spike-48e4425644c9984ea73df6633f13c8ff60d44d4d.tar.bz2
sptbr now a holds a PPN, not an address
Diffstat (limited to 'riscv/mmu.cc')
-rw-r--r--riscv/mmu.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/riscv/mmu.cc b/riscv/mmu.cc
index 0ba3785..b8fb028 100644
--- a/riscv/mmu.cc
+++ b/riscv/mmu.cc
@@ -120,7 +120,7 @@ reg_t mmu_t::walk(reg_t addr, bool supervisor, access_type type)
if (masked_msbs != 0 && masked_msbs != mask)
return -1;
- reg_t base = proc->get_state()->sptbr;
+ reg_t base = proc->get_state()->sptbr << PGSHIFT;
int ptshift = (levels - 1) * ptidxbits;
for (int i = 0; i < levels; i++, ptshift -= ptidxbits) {
reg_t idx = (addr >> (PGSHIFT + ptshift)) & ((1 << ptidxbits) - 1);