xemu/target
Daniel Henrique Barboza 1ffa805c9d target/riscv: sync env->misa_ext* with cpu->cfg in realize()
When riscv_cpu_realize() starts we're guaranteed to have cpu->cfg.ext_N
properties updated. The same can't be said about env->misa_ext*, since
the user might enable/disable MISA extensions in the command line, and
env->misa_ext* won't caught these changes. The current solution is to
sync everything at the end of validate_set_extensions(), checking every
cpu->cfg.ext_N value to do a set_misa() in the end.

The last change we're making in the MISA cfg flags are in the G
extension logic, enabling IMAFG if cpu->cfg_ext.g is enabled. Otherwise
we're not making any changes in MISA bits ever since realize() starts.

There's no reason to postpone misa_ext updates until the end of the
validation. Let's do it earlier, during realize(), in a new helper
called riscv_cpu_sync_misa_cfg(). If cpu->cfg.ext_g is enabled, do it
again by updating env->misa_ext* directly.

This is a pre-requisite to allow riscv_cpu_validate_set_extensions() to
use riscv_has_ext() instead of cpu->cfg.ext_N to validate the MISA
extensions, which is our end goal here.

Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Reviewed-by: Weiwei Li <liweiwei@iscas.ac.cn>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-Id: <20230406180351.570807-2-dbarboza@ventanamicro.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
2023-05-05 10:49:50 +10:00
..
alpha target/alpha: Remove `NB_MMU_MODES` define 2023-03-13 06:44:37 -07:00
arm target/arm: Add compile time asserts to load/store_cpu_field macros 2023-05-02 15:47:41 +01:00
avr target/avr: Avoid use of tcg_const_i32 throughout 2023-03-13 06:44:37 -07:00
cris target/cris: Avoid use of tcg_const_i32 throughout 2023-03-13 06:44:37 -07:00
hexagon Hexagon (target/hexagon) Add overrides for cache/sync/barrier instructions 2023-04-21 09:32:52 -07:00
hppa target/hppa: Avoid use of tcg_const_i32 throughout 2023-03-13 06:44:37 -07:00
i386 target/i386: Add support for PREFETCHIT0/1 in CPUID enumeration 2023-04-28 12:50:34 +02:00
loongarch target/loongarch: Enables plugins to get instruction codes 2023-04-04 19:33:23 +08:00
m68k target/m68k: Use tcg_constant_i32 in gen_ea_mode 2023-03-13 07:03:39 -07:00
microblaze target/microblaze: Remove `NB_MMU_MODES` define 2023-03-13 06:44:37 -07:00
mips target/mips: tcg: detect out-of-bounds accesses to cpu_gpr and cpu_gpr_hi 2023-04-20 11:17:35 +02:00
nios2 target/nios2: Remove `NB_MMU_MODES` define 2023-03-13 06:44:37 -07:00
openrisc target/openrisc: Remove `NB_MMU_MODES` define 2023-03-13 06:44:37 -07:00
ppc target/ppc: Fix temp usage in gen_op_arith_modw 2023-04-09 19:21:27 +02:00
riscv target/riscv: sync env->misa_ext* with cpu->cfg in realize() 2023-05-05 10:49:50 +10:00
rx target/rx: Avoid tcg_const_i32 2023-03-13 06:44:37 -07:00
s390x s390x/gdb: Split s390-virt.xml 2023-04-28 08:05:37 +02:00
sh4 target/sh4: Honor QEMU_LOG_FILENAME with QEMU_LOG=cpu 2023-03-16 10:31:25 +01:00
sparc tcg/sparc: Avoid tcg_const_tl in gen_edge 2023-03-13 06:44:37 -07:00
tricore target/tricore: Use min/max for saturate 2023-03-13 07:03:39 -07:00
xtensa target/xtensa: Remove `NB_MMU_MODES` define 2023-03-13 06:44:37 -07:00
Kconfig hw/loongarch: Add support loongson3 virt machine type. 2022-06-06 18:09:03 +00:00
meson.build target/loongarch: Add target build suport 2022-06-06 18:09:03 +00:00