|
|
|
@ -281,7 +281,14 @@ void state_t::csr_init(processor_t* const proc, reg_t max_isa) |
|
|
|
auto hcontext = std::make_shared<masked_csr_t>(proc, CSR_HCONTEXT, (reg_t(1) << hcontext_length) - 1, 0); |
|
|
|
add_hypervisor_csr(CSR_HCONTEXT, hcontext); |
|
|
|
add_csr(CSR_MCONTEXT, mcontext = std::make_shared<proxy_csr_t>(proc, CSR_MCONTEXT, hcontext)); |
|
|
|
add_csr(CSR_MSECCFG, mseccfg = std::make_shared<mseccfg_csr_t>(proc, CSR_MSECCFG)); |
|
|
|
|
|
|
|
mseccfg = std::make_shared<mseccfg_csr_t>(proc, CSR_MSECCFG); |
|
|
|
if (xlen == 32) { |
|
|
|
add_csr(CSR_MSECCFG, std::make_shared<rv32_low_csr_t>(proc, CSR_MSECCFG, mseccfg)); |
|
|
|
add_csr(CSR_MSECCFGH, mseccfgh = std::make_shared<rv32_high_csr_t>(proc, CSR_MSECCFGH, mseccfg)); |
|
|
|
} else { |
|
|
|
add_csr(CSR_MSECCFG, mseccfg); |
|
|
|
} |
|
|
|
|
|
|
|
for (int i = 0; i < max_pmp; ++i) { |
|
|
|
add_csr(CSR_PMPADDR0 + i, pmpaddr[i] = std::make_shared<pmpaddr_csr_t>(proc, CSR_PMPADDR0 + i)); |
|
|
|
|