aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Chou <max.chou@sifive.com>2025-01-24 17:05:38 +0800
committerAlistair Francis <alistair.francis@wdc.com>2025-03-04 15:42:54 +1000
commitbf3adf93f16730ca5aaa6c26cf969e64eeff6e7b (patch)
tree968ac057d00e0f7e455cda5843fbff81663c955a
parentffd455963f230c7dc04965609d6675da687a5a78 (diff)
downloadqemu-bf3adf93f16730ca5aaa6c26cf969e64eeff6e7b.zip
qemu-bf3adf93f16730ca5aaa6c26cf969e64eeff6e7b.tar.gz
qemu-bf3adf93f16730ca5aaa6c26cf969e64eeff6e7b.tar.bz2
target/riscv: rvv: Fix incorrect vlen comparison in prop_vlen_set
In prop_vlen_set function, there is an incorrect comparison between vlen(bit) and vlenb(byte). This will cause unexpected error when user applies the `vlen=1024` cpu option with a vendor predefined cpu type that the default vlen is 1024(vlenb=128). Fixes: 4f6d036ccc ("target/riscv/cpu.c: remove cpu->cfg.vlen") Signed-off-by: Max Chou <max.chou@sifive.com> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Message-ID: <20250124090539.2506448-1-max.chou@sifive.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
-rw-r--r--target/riscv/cpu.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index d7ecf72..99436f1 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -2027,6 +2027,7 @@ static void prop_vlen_set(Object *obj, Visitor *v, const char *name,
void *opaque, Error **errp)
{
RISCVCPU *cpu = RISCV_CPU(obj);
+ uint16_t cpu_vlen = cpu->cfg.vlenb << 3;
uint16_t value;
if (!visit_type_uint16(v, name, &value, errp)) {
@@ -2038,10 +2039,10 @@ static void prop_vlen_set(Object *obj, Visitor *v, const char *name,
return;
}
- if (value != cpu->cfg.vlenb && riscv_cpu_is_vendor(obj)) {
+ if (value != cpu_vlen && riscv_cpu_is_vendor(obj)) {
cpu_set_prop_err(cpu, name, errp);
error_append_hint(errp, "Current '%s' val: %u\n",
- name, cpu->cfg.vlenb << 3);
+ name, cpu_vlen);
return;
}