diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-02-19 13:05:50 -0800 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-03-02 12:15:25 -0800 |
commit | 48e4425644c9984ea73df6633f13c8ff60d44d4d (patch) | |
tree | 4c5030f66acd1d7d2ae787b021235a11524a5fb1 /riscv/mmu.cc | |
parent | 82b22f61c7e52eff8285d123a8cf9fd59df31425 (diff) | |
download | spike-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.cc | 2 |
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); |