diff options
author | Weiwei Li <liweiwei@iscas.ac.cn> | 2023-02-15 10:05:30 +0800 |
---|---|---|
committer | Palmer Dabbelt <palmer@rivosinc.com> | 2023-03-01 15:12:49 -0800 |
commit | e7f0a803a7b98a784ec6bce7992b7ad643881150 (patch) | |
tree | 17877e3f155b691363eb584d8a32099ca8b45178 | |
parent | a7336161f025c114fc57595801a492d8222540ec (diff) | |
download | qemu-e7f0a803a7b98a784ec6bce7992b7ad643881150.zip qemu-e7f0a803a7b98a784ec6bce7992b7ad643881150.tar.gz qemu-e7f0a803a7b98a784ec6bce7992b7ad643881150.tar.bz2 |
target/riscv: Fix relationship between V, Zve*, F and D
Add dependence chain:
* V => Zve64d => Zve64f => Zve32f => F
* V => Zve64d => D
Signed-off-by: Weiwei Li <liweiwei@iscas.ac.cn>
Signed-off-by: Junqiang Wang <wangjunqiang@iscas.ac.cn>
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Message-ID: <20230215020539.4788-6-liweiwei@iscas.ac.cn>
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
-rw-r--r-- | target/riscv/cpu.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index dcd85f7..49912c9 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -743,12 +743,27 @@ static void riscv_cpu_validate_set_extensions(RISCVCPU *cpu, Error **errp) return; } - if (cpu->cfg.ext_v && !cpu->cfg.ext_d) { - error_setg(errp, "V extension requires D extension"); + /* The V vector extension depends on the Zve64d extension */ + if (cpu->cfg.ext_v) { + cpu->cfg.ext_zve64d = true; + } + + /* The Zve64d extension depends on the Zve64f extension */ + if (cpu->cfg.ext_zve64d) { + cpu->cfg.ext_zve64f = true; + } + + /* The Zve64f extension depends on the Zve32f extension */ + if (cpu->cfg.ext_zve64f) { + cpu->cfg.ext_zve32f = true; + } + + if (cpu->cfg.ext_zve64d && !cpu->cfg.ext_d) { + error_setg(errp, "Zve64d/V extensions require D extension"); return; } - if ((cpu->cfg.ext_zve32f || cpu->cfg.ext_zve64f) && !cpu->cfg.ext_f) { + if (cpu->cfg.ext_zve32f && !cpu->cfg.ext_f) { error_setg(errp, "Zve32f/Zve64f extensions require F extension"); return; } |