@samitouri / QOSamiQemu / commits / 51362da8f7

target/riscv: Fix seed CSR sign extension

The SEED_OPST_* macros expanded to int expressions. When bit 31 was present, converting a CSR seed value to target_ulong on RV64 sign extended the value and incorrectly set the upper 32 bits. Make the SEED_OPST_* constants unsigned so that CSR values are zero extended on RV64. Fixes: 77442380ecbe ("target/riscv: rvk: add CSR support for Zkr") Resolves: https://gitlab.com/qemu-project/qemu/-/issues/4121 Signed-off-by: Ivan Efremov <nendensu@ispras.ru> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20260802113130.7818-2-nendensu@ispras.ru> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>

Ivan Efremov committed Aug 2, 2026 at 14:31 UTC 51362da8f73b13ad029287ee33e190a212894183
1 file changed +5 -5
target/riscv/cpu_bits.h
+5 -5
@@ -1086,11 +1086,11 @@ typedef enum CTRType {
1086 (HVICTL_VTI | HVICTL_IID | HVICTL_IPRIOM | HVICTL_IPRIO)
1087
1088 /* seed CSR bits */
1089 -#define SEED_OPST (0b11 << 30)
1090 -#define SEED_OPST_BIST (0b00 << 30)
1091 -#define SEED_OPST_WAIT (0b01 << 30)
1092 -#define SEED_OPST_ES16 (0b10 << 30)
1093 -#define SEED_OPST_DEAD (0b11 << 30)
1089 +#define SEED_OPST (0b11U << 30)
1090 +#define SEED_OPST_BIST (0b00U << 30)
1091 +#define SEED_OPST_WAIT (0b01U << 30)
1092 +#define SEED_OPST_ES16 (0b10U << 30)
1093 +#define SEED_OPST_DEAD (0b11U << 30)
1094 /* PMU related bits */
1095 #define MIE_LCOFIE (1 << IRQ_PMU_OVF)
1096