From: Anton Johansson Date: Mon, 3 Nov 2025 03:37:08 +0000 (+1000) Subject: target/riscv: Bugfix make bit 62 read-only 0 for sireg* cfg CSR read X-Git-Tag: v11.0.0-rc0~119^2~22 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d9fa41e10156ee9c989f8556adc0fafcaf83d2da;p=thirdparty%2Fqemu.git target/riscv: Bugfix make bit 62 read-only 0 for sireg* cfg CSR read According to version 20250508 of the privileged specification, a read of cyclecfg or instretcfg through sireg* should make the MINH bit read-only 0, currently bit 30 is zeroed. Signed-off-by: Anton Johansson Reviewed-by: Alistair Francis Reviewed-by: Pierrick Bouvier Message-ID: <20251027181831.27016-5-anjo@rev.ng> Signed-off-by: Alistair Francis Message-ID: <20251103033713.904455-4-alistair.francis@wdc.com> Signed-off-by: Alistair Francis --- diff --git a/target/riscv/csr.c b/target/riscv/csr.c index a69b9a11abd..a34b14c4f0b 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -1544,7 +1544,7 @@ static int rmw_cd_ctr_cfg(CPURISCVState *env, int cfg_index, target_ulong *val, wr_mask &= ~MCYCLECFG_BIT_MINH; env->mcyclecfg = (new_val & wr_mask) | (env->mcyclecfg & ~wr_mask); } else { - *val = env->mcyclecfg &= ~MHPMEVENTH_BIT_MINH; + *val = env->mcyclecfg &= ~MHPMEVENT_BIT_MINH; } break; case 2: /* INSTRETCFG */ @@ -1553,7 +1553,7 @@ static int rmw_cd_ctr_cfg(CPURISCVState *env, int cfg_index, target_ulong *val, env->minstretcfg = (new_val & wr_mask) | (env->minstretcfg & ~wr_mask); } else { - *val = env->minstretcfg &= ~MHPMEVENTH_BIT_MINH; + *val = env->minstretcfg &= ~MHPMEVENT_BIT_MINH; } break; default: