diff options
author | Jerry Zhao <jerryz123@berkeley.edu> | 2023-03-27 16:29:54 -0700 |
---|---|---|
committer | Jerry Zhao <jerryz123@berkeley.edu> | 2023-03-29 00:44:20 -0700 |
commit | f9c78b8e05b0a87eb45d37f44559963ecadead34 (patch) | |
tree | d32f0121a582357477e90fac56456cca3adb4ee9 | |
parent | 384316fb36dd382120fe2b3e6ffe91a2c1e0bbee (diff) | |
download | riscv-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.cc | 2 |
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); |