Browse Source

fixed smcdeleg to be limited to, holds a value in the range 0x40-0x5F, from priv AIA section 9.1

pull/2204/head
muhammad.moiz.hussain 7 months ago
parent
commit
49dea04810
  1. 3
      riscv/csrs.cc

3
riscv/csrs.cc

@ -1864,6 +1864,8 @@ void sscsrind_reg_csr_t::verify_permissions(insn_t insn, bool write) const {
csr_t::verify_permissions(insn, write);
if (proc->extension_enabled(EXT_SMCDELEG)) {
auto iselect_val = iselect->read();
if (iselect_val >= SISELECT_SMCDELEG_START && iselect_val <= SISELECT_SMCDELEG_END) {
if (address >= CSR_VSIREG && address <= CSR_VSIREG6) {
if (!state->v) {
// An attempt to access any vsireg* from M or S mode raises an illegal instruction exception.
@ -1916,6 +1918,7 @@ void sscsrind_reg_csr_t::verify_permissions(insn_t insn, bool write) const {
}
}
}
}
csr_t_p proxy_csr = get_reg();
if (proxy_csr == nullptr) {

Loading…
Cancel
Save