diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c index 3540327c9a..72f1372a49 100644 --- a/target/riscv/pmp.c +++ b/target/riscv/pmp.c @@ -211,11 +211,12 @@ void pmp_update_rule_addr(CPURISCVState *env, uint32_t pmp_index) break; case PMP_AMATCH_TOR: + if (prev_addr >= this_addr) { + sa = ea = 0u; + break; + } sa = prev_addr << 2; /* shift up from [xx:0] to [xx+2:2] */ ea = (this_addr << 2) - 1u; - if (sa > ea) { - sa = ea = 0u; - } break; case PMP_AMATCH_NA4: