qemu-e2k/target
Peter Maydell 782781e85d target/arm: Fix generated code for cpreg reads when HSTR is active
In commit 049edada we added some code to handle HSTR_EL2 traps, which
we did as an inline "conditionally branch over a
gen_exception_insn()".  Unfortunately this fails to take account of
the fact that gen_exception_insn() will set s->base.is_jmp to
DISAS_NORETURN.  That means that at the end of the TB we won't
generate the necessary code to handle the "branched over the trap and
continued normal execution" codepath.  The result is that the TCG
main loop thinks that we stopped execution of the TB due to a
situation that only happens when icount is enabled, and hits an
assertion. Explicitly set is_jmp back to DISAS_NEXT so we generate
the correct code for when execution continues past this insn.

Note that this only happens for cpreg reads; writes will call
gen_lookup_tb() which generates a valid end-of-TB.

Fixes: 049edada ("target/arm: Make HSTR_EL2 traps take priority over UNDEF-at-EL1")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1551
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20230330101900.2320380-1-peter.maydell@linaro.org
2023-04-03 16:12:30 +01:00
..
alpha target/alpha: Remove NB_MMU_MODES define 2023-03-13 06:44:37 -07:00
arm target/arm: Fix generated code for cpreg reads when HSTR is active 2023-04-03 16:12:30 +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 target/hexagon: Remove NB_MMU_MODES define 2023-03-13 06:44:37 -07:00
hppa target/hppa: Avoid use of tcg_const_i32 throughout 2023-03-13 06:44:37 -07:00
i386 *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00:00
loongarch target/loongarch: Remove NB_MMU_MODES define 2023-03-13 06:44:37 -07: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 *: Add missing includes of qemu/error-report.h 2023-03-22 15:06:57 +00: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 helper_pminsn() prototype 2023-03-24 11:46:08 +01:00
riscv target/riscv: Remove NB_MMU_MODES define 2023-03-13 06:44:37 -07:00
rx target/rx: Avoid tcg_const_i32 2023-03-13 06:44:37 -07:00
s390x softmmu: Restrict cpu_check_watchpoint / address_matches to TCG accel 2023-03-28 15:24:06 -07: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