@samitouri / QOSamiQemu / commits / e499a42786

target/riscv/tcg: use isa_edata_arr[] to create user props

This change has been done twice now: one in riscv-qmp-cmds, another in the KVM. We're now ready to do it for TCG. Signed-off-by: Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com> Acked-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20260512032926.1978818-14-daniel.barboza@oss.qualcomm.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>

Daniel Henrique Barboza committed May 12, 2026 at 00:29 UTC e499a42786c4c935222d80783855cdb7e3ce0f3a
1 file changed +10 -24
target/riscv/tcg/tcg-cpu.c
+10 -24
@@ -1550,27 +1550,6 @@ static void cpu_get_multi_ext_cfg(Object *obj, Visitor *v, const char *name,
1550 visit_type_bool(v, name, &value, errp);
1551 }
1552
1553 -static void cpu_add_multi_ext_prop(Object *cpu_obj,
1554 - const RISCVCPUMultiExtConfig *multi_cfg)
1555 -{
1556 - object_property_add(cpu_obj, multi_cfg->name, "bool",
1557 - cpu_get_multi_ext_cfg,
1558 - cpu_set_multi_ext_cfg,
1559 - NULL, (void *)&multi_cfg->offset);
1560 -}
1561 -
1562 -static void riscv_cpu_add_multiext_prop_array(Object *obj,
1563 - const RISCVCPUMultiExtConfig *array)
1564 -{
1565 - const RISCVCPUMultiExtConfig *prop;
1566 -
1567 - g_assert(array);
1568 -
1569 - for (prop = array; prop && prop->name; prop++) {
1570 - cpu_add_multi_ext_prop(obj, prop);
1571 - }
1572 -}
1573 -
1553 /*
1554 * Add CPU properties with user-facing flags.
1555 *
@@ -1579,15 +1558,22 @@ static void riscv_cpu_add_multiext_prop_array(Object *obj,
1558 */
1559 static void riscv_cpu_add_user_properties(Object *obj)
1560 {
1561 + const RISCVIsaExtData *edata;
1562 +
1563 #ifndef CONFIG_USER_ONLY
1564 riscv_add_satp_mode_properties(obj);
1565 #endif
1566
1567 riscv_cpu_add_misa_properties(obj);
1568
1588 - riscv_cpu_add_multiext_prop_array(obj, riscv_cpu_extensions);
1589 - riscv_cpu_add_multiext_prop_array(obj, riscv_cpu_vendor_exts);
1590 - riscv_cpu_add_multiext_prop_array(obj, riscv_cpu_experimental_exts);
1569 + for (edata = isa_edata_arr; edata && edata->name; edata++) {
1570 + if (edata->prop_name) {
1571 + object_property_add(obj, edata->prop_name, "bool",
1572 + cpu_get_multi_ext_cfg,
1573 + cpu_set_multi_ext_cfg,
1574 + NULL, (void *)&edata->ext_enable_offset);
1575 + }
1576 + }
1577
1578 riscv_cpu_add_profiles(obj);
1579 }