Skip to content

Commit 5d0ab7e

Browse files
committed
Check H extension enabled when accessing hvictl
Signed-off-by: Binno <[email protected]>
1 parent 7c01135 commit 5d0ab7e

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

riscv/csrs.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -890,7 +890,7 @@ mip_proxy_csr_t::mip_proxy_csr_t(processor_t* const proc, const reg_t addr, gene
890890

891891
void mip_proxy_csr_t::verify_permissions(insn_t insn, bool write) const {
892892
csr_t::verify_permissions(insn, write);
893-
if (proc->extension_enabled_const(EXT_SSAIA)) {
893+
if (proc->extension_enabled_const(EXT_SSAIA) && proc->extension_enabled('H')) {
894894
if ((state->csrmap[CSR_HVICTL]->read() & HVICTL_VTI) &&
895895
proc->extension_enabled('S') && state->v)
896896
throw trap_virtual_instruction(insn.bits()); // VS-mode attempts to access sip when hvictl.VTI=1
@@ -914,7 +914,7 @@ mie_proxy_csr_t::mie_proxy_csr_t(processor_t* const proc, const reg_t addr, gene
914914

915915
void mie_proxy_csr_t::verify_permissions(insn_t insn, bool write) const {
916916
csr_t::verify_permissions(insn, write);
917-
if (proc->extension_enabled_const(EXT_SSAIA)) {
917+
if (proc->extension_enabled_const(EXT_SSAIA) && proc->extension_enabled('H')) {
918918
if ((state->csrmap[CSR_HVICTL]->read() & HVICTL_VTI) &&
919919
proc->extension_enabled('S') && state->v)
920920
throw trap_virtual_instruction(insn.bits()); // VS-mode attempts to access sie when hvictl.VTI=1
@@ -1735,7 +1735,7 @@ void stimecmp_csr_t::verify_permissions(insn_t insn, bool write) const {
17351735

17361736
basic_csr_t::verify_permissions(insn, write);
17371737

1738-
if (proc->extension_enabled_const(EXT_SSAIA)) {
1738+
if (proc->extension_enabled_const(EXT_SSAIA) && proc->extension_enabled('H')) {
17391739
if ((state->csrmap[CSR_HVICTL]->read() & HVICTL_VTI) && state->v && write)
17401740
throw trap_virtual_instruction(insn.bits());
17411741
}

0 commit comments

Comments
 (0)