Skip to content

Commit 18211c4

Browse files
committed
AIA: instantiate S/VS IMSIC indirect CSRs
1 parent 266dcac commit 18211c4

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

riscv/csr_init.cc

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,25 @@ void state_t::csr_init(processor_t* const proc, reg_t max_isa)
510510
}
511511
}
512512
}
513+
if (proc->extension_enabled_const(EXT_SSAIA)) {
514+
auto aia_vsireg = std::make_shared<aia_ireg_proxy_csr_t>(proc, CSR_VSIREG, vsiselect);
515+
// csrmaps of vs files are the same as vgein = 1
516+
for (auto &csr : *aia_vsireg->get_csrmap(1))
517+
vsireg->add_ireg_proxy(csr.first, aia_vsireg);
518+
// reserved range RAZ/WI
519+
vsireg->add_ireg_proxy(0x71, aia_vsireg);
520+
for (int i = 0x73; i <= 0x7f; i++)
521+
vsireg->add_ireg_proxy(i, aia_vsireg);
522+
523+
auto aia_sireg = std::make_shared<aia_ireg_proxy_csr_t>(proc, CSR_SIREG, siselect);
524+
for (auto &csr : *aia_sireg->get_csrmap())
525+
sireg->add_ireg_proxy(csr.first, aia_sireg);
526+
// reserved range RAZ/WI
527+
sireg->add_ireg_proxy(0x71, aia_sireg);
528+
for (int i = 0x73; i <= 0x7f; i++)
529+
sireg->add_ireg_proxy(i, aia_sireg);
530+
}
531+
513532
}
514533

515534
if (proc->extension_enabled_const(EXT_SMCNTRPMF)) {

0 commit comments

Comments
 (0)