Browse Source
Merge pull request #2089 from chihminchao/fix-mseccfg-rv32
csr: fix mseccfg for rv32
pull/2094/head
Andrew Waterman
10 months ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with
9 additions and
1 deletions
-
riscv/csr_init.cc
-
riscv/processor.h
|
|
|
@ -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)); |
|
|
|
|
|
|
|
@ -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]; |
|
|
|
|