@@ -890,7 +890,7 @@ mip_proxy_csr_t::mip_proxy_csr_t(processor_t* const proc, const reg_t addr, gene
890890
891891void 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
915915void 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