aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Zhao <jerryz123@berkeley.edu>2023-03-27 16:29:54 -0700
committerJerry Zhao <jerryz123@berkeley.edu>2023-03-29 00:44:20 -0700
commitf9c78b8e05b0a87eb45d37f44559963ecadead34 (patch)
treed32f0121a582357477e90fac56456cca3adb4ee9
parent384316fb36dd382120fe2b3e6ffe91a2c1e0bbee (diff)
downloadriscv-isa-sim-f9c78b8e05b0a87eb45d37f44559963ecadead34.zip
riscv-isa-sim-f9c78b8e05b0a87eb45d37f44559963ecadead34.tar.gz
riscv-isa-sim-f9c78b8e05b0a87eb45d37f44559963ecadead34.tar.bz2
Set counteren_mask properly when !(zihpm && zicntr)
-rw-r--r--riscv/processor.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/riscv/processor.cc b/riscv/processor.cc
index c05bdac..a00d13d 100644
--- a/riscv/processor.cc
+++ b/riscv/processor.cc
@@ -323,7 +323,7 @@ void state_t::reset(processor_t* const proc, reg_t max_isa)
csrmap[CSR_MEDELEG] = medeleg = std::make_shared<medeleg_csr_t>(proc, CSR_MEDELEG);
csrmap[CSR_MIDELEG] = mideleg = std::make_shared<mideleg_csr_t>(proc, CSR_MIDELEG);
- const reg_t counteren_mask = 0xffffffffULL;
+ const reg_t counteren_mask = (proc->extension_enabled_const(EXT_ZICNTR) ? 0x7UL : 0x0) | (proc->extension_enabled_const(EXT_ZIHPM) ? 0xfffffff8ULL : 0x0);
mcounteren = std::make_shared<masked_csr_t>(proc, CSR_MCOUNTEREN, counteren_mask, 0);
if (proc->extension_enabled_const('U')) csrmap[CSR_MCOUNTEREN] = mcounteren;
csrmap[CSR_SCOUNTEREN] = scounteren = std::make_shared<masked_csr_t>(proc, CSR_SCOUNTEREN, counteren_mask, 0);