On Thu, May 28, 2026 at 3:43 PM <[email protected]> wrote: > > From: Jim Shu <[email protected]> > > Add the missing implied rule from G to imafd_zicsr_zifencei. > We can also remove the auto-enables in riscv_cpu_validate_g() as > IMAFD, Zicsr, Zifencei extensions can be enabled by the implied rule. > > Signed-off-by: Jim Shu <[email protected]> > Reviewed-by: Frank Chang <[email protected]>
Reviewed-by: Alistair Francis <[email protected]> Alistair > --- > target/riscv/cpu.c | 14 +++++++++++++- > target/riscv/tcg/tcg-cpu.c | 21 ++++----------------- > 2 files changed, 17 insertions(+), 18 deletions(-) > > diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c > index 952e34fdf55..4246fb87c64 100644 > --- a/target/riscv/cpu.c > +++ b/target/riscv/cpu.c > @@ -2094,6 +2094,18 @@ static RISCVCPUImpliedExtsRule RVV_IMPLIED = { > }, > }; > > +static RISCVCPUImpliedExtsRule RVG_IMPLIED = { > + .is_misa = true, > + .ext = RVG, > + .implied_misa_exts = RVI | RVM | RVA | RVF | RVD, > + .implied_multi_exts = { > + CPU_CFG_OFFSET(ext_zicsr), > + CPU_CFG_OFFSET(ext_zifencei), > + > + RISCV_IMPLIED_EXTS_RULE_END > + }, > +}; > + > static RISCVCPUImpliedExtsRule ZCB_IMPLIED = { > .ext = CPU_CFG_OFFSET(ext_zcb), > .implied_multi_exts = { > @@ -2501,7 +2513,7 @@ static RISCVCPUImpliedExtsRule ZVFBFA_IMPLIED = { > > RISCVCPUImpliedExtsRule *riscv_misa_ext_implied_rules[] = { > &RVA_IMPLIED, &RVD_IMPLIED, &RVF_IMPLIED, > - &RVM_IMPLIED, &RVV_IMPLIED, NULL > + &RVM_IMPLIED, &RVV_IMPLIED, &RVG_IMPLIED, NULL > }; > > RISCVCPUImpliedExtsRule *riscv_multi_ext_implied_rules[] = { > diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c > index 7e964e8f1aa..66ac011c54d 100644 > --- a/target/riscv/tcg/tcg-cpu.c > +++ b/target/riscv/tcg/tcg-cpu.c > @@ -496,30 +496,17 @@ static void riscv_cpu_validate_g(RISCVCPU *cpu) > continue; > } > > - if (!cpu_misa_ext_is_user_set(bit)) { > - riscv_cpu_write_misa_bit(cpu, bit, true); > - continue; > - } > - > if (send_warn) { > warn_report(warn_msg, riscv_get_misa_ext_name(bit)); > } > } > > - if (!cpu->cfg.ext_zicsr) { > - if (!cpu_cfg_ext_is_user_set(CPU_CFG_OFFSET(ext_zicsr))) { > - cpu->cfg.ext_zicsr = true; > - } else if (send_warn) { > - warn_report(warn_msg, "zicsr"); > - } > + if (!cpu->cfg.ext_zicsr && send_warn) { > + warn_report(warn_msg, "zicsr"); > } > > - if (!cpu->cfg.ext_zifencei) { > - if (!cpu_cfg_ext_is_user_set(CPU_CFG_OFFSET(ext_zifencei))) { > - cpu->cfg.ext_zifencei = true; > - } else if (send_warn) { > - warn_report(warn_msg, "zifencei"); > - } > + if (!cpu->cfg.ext_zifencei && send_warn) { > + warn_report(warn_msg, "zifencei"); > } > } > > -- > 2.43.0 > >
