aboutsummaryrefslogtreecommitdiff
path: root/riscv/mmu.cc
diff options
context:
space:
mode:
authorScott Johnson <scott.johnson@arilinc.com>2021-02-22 21:30:58 -0800
committerAndrew Waterman <aswaterman@gmail.com>2021-09-08 07:59:02 -0700
commitf38dc8e243191f1d4ef29376c765e9c7edd58704 (patch)
tree0338b9036e5a9507de84473da4167d74413ec1b1 /riscv/mmu.cc
parent99a8a7ba69f3a854f40e6c83e2bf9b810e0dc5fa (diff)
downloadspike-f38dc8e243191f1d4ef29376c765e9c7edd58704.zip
spike-f38dc8e243191f1d4ef29376c765e9c7edd58704.tar.gz
spike-f38dc8e243191f1d4ef29376c765e9c7edd58704.tar.bz2
Convert pmpaddr* to csr_t family
Diffstat (limited to 'riscv/mmu.cc')
-rw-r--r--riscv/mmu.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/riscv/mmu.cc b/riscv/mmu.cc
index d9fdd07..2fd5a43 100644
--- a/riscv/mmu.cc
+++ b/riscv/mmu.cc
@@ -222,14 +222,14 @@ reg_t mmu_t::pmp_ok(reg_t addr, reg_t len, access_type type, reg_t mode)
reg_t base = 0;
for (size_t i = 0; i < proc->n_pmp; i++) {
- reg_t tor = (proc->state.pmpaddr[i] & proc->pmp_tor_mask()) << PMP_SHIFT;
+ reg_t tor = (proc->state.pmpaddr[i]->raw_value() & proc->pmp_tor_mask()) << PMP_SHIFT;
uint8_t cfg = proc->state.pmpcfg[i];
if (cfg & PMP_A) {
bool is_tor = (cfg & PMP_A) == PMP_TOR;
bool is_na4 = (cfg & PMP_A) == PMP_NA4;
- reg_t mask = (proc->state.pmpaddr[i] << 1) | (!is_na4) | ~proc->pmp_tor_mask();
+ reg_t mask = (proc->state.pmpaddr[i]->raw_value() << 1) | (!is_na4) | ~proc->pmp_tor_mask();
mask = ~(mask & ~(mask + 1)) << PMP_SHIFT;
// Check each 4-byte sector of the access
@@ -273,7 +273,7 @@ reg_t mmu_t::pmp_homogeneous(reg_t addr, reg_t len)
reg_t base = 0;
for (size_t i = 0; i < proc->n_pmp; i++) {
- reg_t tor = (proc->state.pmpaddr[i] & proc->pmp_tor_mask()) << PMP_SHIFT;
+ reg_t tor = (proc->state.pmpaddr[i]->raw_value() & proc->pmp_tor_mask()) << PMP_SHIFT;
uint8_t cfg = proc->state.pmpcfg[i];
if (cfg & PMP_A) {
@@ -287,7 +287,7 @@ reg_t mmu_t::pmp_homogeneous(reg_t addr, reg_t len)
bool tor_homogeneous = ends_before_lower || begins_after_upper ||
(begins_after_lower && ends_before_upper);
- reg_t mask = (proc->state.pmpaddr[i] << 1) | (!is_na4) | ~proc->pmp_tor_mask();
+ reg_t mask = (proc->state.pmpaddr[i]->raw_value() << 1) | (!is_na4) | ~proc->pmp_tor_mask();
mask = ~(mask & ~(mask + 1)) << PMP_SHIFT;
bool mask_homogeneous = ~(mask << 1) & len;
bool napot_homogeneous = mask_homogeneous || ((addr ^ tor) / len) != 0;