target/riscv: Assert that the CSR numbers will be correct
The CSRs will always be between either CSR_MHPMCOUNTER3 and CSR_MHPMCOUNTER31 or CSR_MHPMCOUNTER3H and CSR_MHPMCOUNTER31H. So although ctr_index can't be negative, Coverity doesn't know this and it isn't obvious to human readers either. Let's add an assert to ensure that Coverity knows the values will be within range. To simplify the code let's also change the RV32 adjustment. Fixes: Coverity CID 1523910 Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Message-ID: <20240108001328.280222-2-alistair.francis@wdc.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
1a25e59c62
commit
9a7c6da4cd
@ -195,8 +195,11 @@ static RISCVException mctr(CPURISCVState *env, int csrno)
|
||||
|
||||
if ((riscv_cpu_mxl(env) == MXL_RV32) && csrno >= CSR_MCYCLEH) {
|
||||
/* Offset for RV32 mhpmcounternh counters */
|
||||
base_csrno += 0x80;
|
||||
csrno -= 0x80;
|
||||
}
|
||||
|
||||
g_assert(csrno >= CSR_MHPMCOUNTER3 && csrno <= CSR_MHPMCOUNTER31);
|
||||
|
||||
ctr_index = csrno - base_csrno;
|
||||
if ((BIT(ctr_index) & pmu_avail_ctrs >> 3) == 0) {
|
||||
/* The PMU is not enabled or counter is out of range */
|
||||
|
Loading…
Reference in New Issue
Block a user