mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-03 21:20:31 -07:00
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>
This commit is contained in:
parent
ffd455963f
commit
bf3adf93f1
1 changed files with 3 additions and 2 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue