Skip to content

Commit 0fa8e0c

Browse files
authored
Merge pull request #2040 from mmhus/mmhus/take-sireg-case-out-of-switch
Sireg is not in the sireg_csrs[] list, so needs to be checked outside… #2041
2 parents 2794373 + 5063dcb commit 0fa8e0c

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

riscv/csr_init.cc

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,17 @@ void state_t::csr_init(processor_t* const proc, reg_t max_isa)
430430
auto sireg = std::make_shared<sscsrind_reg_csr_t>(proc, CSR_SIREG, siselect);
431431
add_ireg_proxy(proc, sireg);
432432
add_supervisor_csr(CSR_SIREG, std::make_shared<virtualized_indirect_csr_t>(proc, sireg, vsireg));
433+
if (proc->extension_enabled(EXT_SSCCFG) || proc->extension_enabled(EXT_SMCDELEG)) {
434+
// case CSR_SIREG
435+
if (proc->extension_enabled_const(EXT_ZICNTR)) {
436+
sireg->add_ireg_proxy(SISELECT_SMCDELEG_START, mcycle);
437+
sireg->add_ireg_proxy(SISELECT_SMCDELEG_INSTRET, minstret);
438+
}
439+
if (proc->extension_enabled_const(EXT_ZIHPM)) {
440+
for (size_t j = 0; j < (SISELECT_SMCDELEG_END - SISELECT_SMCDELEG_HPMEVENT_3 + 1); j++)
441+
sireg->add_ireg_proxy(SISELECT_SMCDELEG_HPMCOUNTER_3 + j, csrmap[CSR_HPMCOUNTER3 + j]);
442+
}
443+
}
433444

434445
const reg_t vsireg_csrs[] = { CSR_VSIREG2, CSR_VSIREG3, CSR_VSIREG4, CSR_VSIREG5, CSR_VSIREG6 };
435446
const reg_t sireg_csrs[] = { CSR_SIREG2, CSR_SIREG3, CSR_SIREG4, CSR_SIREG5, CSR_SIREG6 };
@@ -443,16 +454,6 @@ void state_t::csr_init(processor_t* const proc, reg_t max_isa)
443454
// Smcdeleg
444455
if (proc->extension_enabled(EXT_SSCCFG) || proc->extension_enabled(EXT_SMCDELEG)) {
445456
switch (sireg_csrs[i]) {
446-
case CSR_SIREG:
447-
if (proc->extension_enabled_const(EXT_ZICNTR)) {
448-
sireg->add_ireg_proxy(SISELECT_SMCDELEG_START, mcycle);
449-
sireg->add_ireg_proxy(SISELECT_SMCDELEG_INSTRET, minstret);
450-
}
451-
if (proc->extension_enabled_const(EXT_ZIHPM)) {
452-
for (size_t j = 0; j < (SISELECT_SMCDELEG_END - SISELECT_SMCDELEG_HPMEVENT_3 + 1); j++)
453-
sireg->add_ireg_proxy(SISELECT_SMCDELEG_HPMCOUNTER_3 + j, csrmap[CSR_HPMCOUNTER3 + j]);
454-
}
455-
break;
456457
case CSR_SIREG4:
457458
if (xlen == 32) {
458459
if (proc->extension_enabled_const(EXT_ZICNTR)) {

0 commit comments

Comments
 (0)