diff options
author | Scott Johnson <scott.johnson@arilinc.com> | 2021-02-23 17:30:18 -0800 |
---|---|---|
committer | Andrew Waterman <aswaterman@gmail.com> | 2021-09-08 07:59:02 -0700 |
commit | 95824344eb56097e9bb45cab9d22ab370908c2ff (patch) | |
tree | 50e8ed824cf85963603d0a8868c48643f1ea425e /riscv/mmu.cc | |
parent | 82aa7891e24de9c25a949f948ef6f47a732d7fdb (diff) | |
download | spike-95824344eb56097e9bb45cab9d22ab370908c2ff.zip spike-95824344eb56097e9bb45cab9d22ab370908c2ff.tar.gz spike-95824344eb56097e9bb45cab9d22ab370908c2ff.tar.bz2 |
Add tor_base_paddr() method to pmpaddr
This will enable further restructuring of these loops in mmu.cc in the
next commits.
Diffstat (limited to 'riscv/mmu.cc')
-rw-r--r-- | riscv/mmu.cc | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/riscv/mmu.cc b/riscv/mmu.cc index 841fa7e..be3d3e0 100644 --- a/riscv/mmu.cc +++ b/riscv/mmu.cc @@ -220,8 +220,8 @@ reg_t mmu_t::pmp_ok(reg_t addr, reg_t len, access_type type, reg_t mode) if (!proc || proc->n_pmp == 0) return true; - reg_t base = 0; for (size_t i = 0; i < proc->n_pmp; i++) { + reg_t base = proc->state.pmpaddr[i]->tor_base_paddr(); reg_t tor = proc->state.pmpaddr[i]->tor_paddr(); uint8_t cfg = proc->state.pmpcfg[i]; @@ -252,8 +252,6 @@ reg_t mmu_t::pmp_ok(reg_t addr, reg_t len, access_type type, reg_t mode) (type == FETCH && (cfg & PMP_X)); } } - - base = tor; } return mode == PRV_M; @@ -267,8 +265,8 @@ reg_t mmu_t::pmp_homogeneous(reg_t addr, reg_t len) if (!proc) return true; - reg_t base = 0; for (size_t i = 0; i < proc->n_pmp; i++) { + reg_t base = proc->state.pmpaddr[i]->tor_base_paddr(); reg_t tor = proc->state.pmpaddr[i]->tor_paddr(); uint8_t cfg = proc->state.pmpcfg[i]; @@ -288,8 +286,6 @@ reg_t mmu_t::pmp_homogeneous(reg_t addr, reg_t len) if (!(is_tor ? tor_homogeneous : napot_homogeneous)) return false; } - - base = tor; } return true; |