Browse Source

csr: fix mseccfg for rv32

Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com>
pull/2089/head
Chih-Min Chao 6 months ago
parent
commit
180c10fe42
  1. 9
      riscv/csr_init.cc
  2. 1
      riscv/processor.h

9
riscv/csr_init.cc

@ -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));

1
riscv/processor.h

@ -152,6 +152,7 @@ struct state_t
bool debug_mode;
mseccfg_csr_t_p mseccfg;
csr_t_p mseccfgh;
static const int max_pmp = 64;
pmpaddr_csr_t_p pmpaddr[max_pmp];

Loading…
Cancel
Save