Browse Source

use extension_enabled('H') instead of extension_enabled_const('H') since misa.H is RW

The masked_csr_t does not meet the behavior of mevent
because the misa.H is not read-only (hardwired).

h/t @kwalker27
reported at https://github.com/riscv-software-src/riscv-isa-sim/pull/1154
pull/1155/head
YenHaoChen 3 years ago
parent
commit
1a7e9af460
  1. 2
      riscv/csrs.cc

2
riscv/csrs.cc

@ -1062,7 +1062,7 @@ bool mevent_csr_t::unlogged_write(const reg_t val) noexcept {
const reg_t mask = proc->extension_enabled(EXT_SSCOFPMF) ? MHPMEVENT_OF | MHPMEVENT_MINH
| (proc->extension_enabled_const('U') ? MHPMEVENT_UINH : 0)
| (proc->extension_enabled_const('S') ? MHPMEVENT_SINH : 0)
| (proc->extension_enabled_const('H') ? MHPMEVENT_VUINH | MHPMEVENT_VSINH : 0) : 0;
| (proc->extension_enabled('H') ? MHPMEVENT_VUINH | MHPMEVENT_VSINH : 0) : 0;
return basic_csr_t::unlogged_write((read() & ~mask) | (val & mask));
}

Loading…
Cancel
Save