target/riscv: Restrict midelegh access to S-mode harts
RISC-V AIA Spec states: "For a machine-level environment, extension Smaia encompasses all added CSRs and all modifications to interrupt response behavior that the AIA specifies for a hart, over all privilege levels. For a supervisor-level environment, extension Ssaia is essentially the same as Smaia except excluding the machine-level CSRs and behavior not directly visible to supervisor level." Since midelegh is an AIA machine-mode CSR, add Smaia extension check in aia_smode32 predicate. Reviewed-by: Frank Chang <frank.chang@sifive.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Jay Chang <jay.chang@sifive.com> Reviewed-by: Nutty Liu<liujingqi@lanxincomputing.com> Message-ID: <20250701030021.99218-3-jay.chang@sifive.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
e443ba0336
commit
86bc3a0abf
1 changed files with 5 additions and 2 deletions
|
|
@ -374,8 +374,11 @@ static RISCVException aia_smode(CPURISCVState *env, int csrno)
|
|||
static RISCVException aia_smode32(CPURISCVState *env, int csrno)
|
||||
{
|
||||
int ret;
|
||||
int csr_priv = get_field(csrno, 0x300);
|
||||
|
||||
if (!riscv_cpu_cfg(env)->ext_ssaia) {
|
||||
if (csr_priv == PRV_M && !riscv_cpu_cfg(env)->ext_smaia) {
|
||||
return RISCV_EXCP_ILLEGAL_INST;
|
||||
} else if (!riscv_cpu_cfg(env)->ext_ssaia) {
|
||||
return RISCV_EXCP_ILLEGAL_INST;
|
||||
}
|
||||
|
||||
|
|
@ -5911,7 +5914,7 @@ riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = {
|
|||
[CSR_MVIP] = { "mvip", aia_any, NULL, NULL, rmw_mvip },
|
||||
|
||||
/* Machine-Level High-Half CSRs (AIA) */
|
||||
[CSR_MIDELEGH] = { "midelegh", aia_any32, NULL, NULL, rmw_midelegh },
|
||||
[CSR_MIDELEGH] = { "midelegh", aia_smode32, NULL, NULL, rmw_midelegh },
|
||||
[CSR_MIEH] = { "mieh", aia_any32, NULL, NULL, rmw_mieh },
|
||||
[CSR_MVIENH] = { "mvienh", aia_any32, NULL, NULL, rmw_mvienh },
|
||||
[CSR_MVIPH] = { "mviph", aia_any32, NULL, NULL, rmw_mviph },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue