On Sat, 2026-08-15 at 13:37 -0700, Richard Henderson wrote: > Check for region disabled before checking the region range. > > Signed-off-by: Richard Henderson <[email protected]>
Reviewed-by: Alistair Francis <[email protected]> Alistair > --- > target/riscv/tcg/pmp.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/target/riscv/tcg/pmp.c b/target/riscv/tcg/pmp.c > index 41b55519a8..5bccc60527 100644 > --- a/target/riscv/tcg/pmp.c > +++ b/target/riscv/tcg/pmp.c > @@ -415,6 +415,10 @@ bool pmp_hart_has_privs(CPURISCVState *env, > hwaddr addr, > * from low to high > */ > for (i = 0; i < pmp_regions; i++) { > + if (pmp_get_a_field(env->pmp_state.pmp[i].cfg_reg) == > PMP_AMATCH_OFF) { > + continue; > + } > + > s = pmp_is_in_range(env, i, addr); > e = pmp_is_in_range(env, i, addr + pmp_size - 1); > > @@ -427,10 +431,7 @@ bool pmp_hart_has_privs(CPURISCVState *env, > hwaddr addr, > } > > /* fully inside */ > - const uint8_t a_field = > - pmp_get_a_field(env->pmp_state.pmp[i].cfg_reg); > - > - if (((s + e) == 2) && (PMP_AMATCH_OFF != a_field)) { > + if (s + e == 2) { > /* > * If the PMP entry is not off and the address is in > range, > * do the priv check
