@@ -12,7 +12,7 @@ void state_t::add_csr(reg_t addr, const csr_t_p& csr)
1212#define add_supervisor_csr (addr, csr ) add_const_ext_csr(' S' , addr, csr)
1313#define add_hypervisor_csr (addr, csr ) add_ext_csr(' H' , addr, csr)
1414
15- void state_t::add_ireg_proxy (processor_t * const proc, sscsrind_reg_csr_t ::sscsrind_reg_csr_t_p ireg)
15+ void state_t::add_iprio_proxy (processor_t * const proc, sscsrind_reg_csr_t ::sscsrind_reg_csr_t_p ireg)
1616{
1717 // This assumes xlen is always max_xlen, which is true today (see
1818 // mstatus_csr_t::unlogged_write()):
@@ -421,7 +421,8 @@ void state_t::csr_init(processor_t* const proc, reg_t max_isa)
421421
422422 sscsrind_reg_csr_t ::sscsrind_reg_csr_t_p mireg;
423423 add_csr (CSR_MIREG, mireg = std::make_shared<sscsrind_reg_csr_t >(proc, CSR_MIREG, miselect));
424- add_ireg_proxy (proc, mireg);
424+ if (proc->extension_enabled_const (EXT_SMAIA))
425+ add_iprio_proxy (proc, mireg);
425426 const reg_t mireg_csrs[] = { CSR_MIREG2, CSR_MIREG3, CSR_MIREG4, CSR_MIREG5, CSR_MIREG6 };
426427 for (auto csr : mireg_csrs)
427428 add_csr (csr, std::make_shared<sscsrind_reg_csr_t >(proc, csr, miselect));
@@ -438,7 +439,8 @@ void state_t::csr_init(processor_t* const proc, reg_t max_isa)
438439 add_hypervisor_csr (CSR_VSIREG, vsireg);
439440
440441 auto sireg = std::make_shared<sscsrind_reg_csr_t >(proc, CSR_SIREG, siselect);
441- add_ireg_proxy (proc, sireg);
442+ if (proc->extension_enabled_const (EXT_SSAIA))
443+ add_iprio_proxy (proc, sireg);
442444 add_supervisor_csr (CSR_SIREG, std::make_shared<virtualized_indirect_csr_t >(proc, sireg, vsireg));
443445 if (proc->extension_enabled (EXT_SSCCFG) || proc->extension_enabled (EXT_SMCDELEG)) {
444446 // case CSR_SIREG
0 commit comments