xemu/target
Peter Maydell 84848481c3 target/arm: Avoid goto_tb if we're trying to exit to the main loop
Currently gen_jmp_tb() assumes that if it is called then the jump it
is handling is the only reason that we might be trying to end the TB,
so it will use goto_tb if it can.  This is usually the case: mostly
"we did something that means we must end the TB" happens on a
non-branch instruction.  However, there are cases where we decide
early in handling an instruction that we need to end the TB and
return to the main loop, and then the insn is a complex one that
involves gen_jmp_tb().  For instance, for M-profile FP instructions,
in gen_preserve_fp_state() which is called from vfp_access_check() we
want to force an exit to the main loop if lazy state preservation is
active and we are in icount mode.

Make gen_jmp_tb() look at the current value of is_jmp, and only use
goto_tb if the previous is_jmp was DISAS_NEXT or DISAS_TOO_MANY.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20210913095440.13462-2-peter.maydell@linaro.org
2021-09-21 16:28:27 +01:00
..
alpha target/alpha: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
arm target/arm: Avoid goto_tb if we're trying to exit to the main loop 2021-09-21 16:28:27 +01:00
avr Trivial patches pull request 20210916 2021-09-16 16:02:31 +01:00
cris target/cris: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
hexagon accel/tcg: Add DisasContextBase argument to translator_ld* 2021-09-14 12:00:20 -07:00
hppa target/hppa: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
i386 hvf: Add Apple Silicon support 2021-09-20 09:57:03 +01:00
m68k Pull request linux-user 20210916 2021-09-16 21:09:18 +01:00
microblaze target/microblaze: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
mips target/mips: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
nios2 Pull request linux-user 20210916 2021-09-16 21:09:18 +01:00
openrisc target/openrisc: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
ppc target/ppc: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
riscv target/riscv: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
rx target/rx: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
s390x accel/tcg: Add DisasContextBase argument to translator_ld* 2021-09-14 12:00:20 -07:00
sh4 target/sh4: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
sparc Trivial patches pull request 20210916 2021-09-16 16:02:31 +01:00
tricore accel/tcg: Remove TranslatorOps.breakpoint_check 2021-07-21 07:47:05 -10:00
xtensa target/xtensa: Restrict cpu_exec_interrupt() handler to sysemu 2021-09-14 12:00:21 -07:00
Kconfig meson: Introduce target-specific Kconfig 2021-07-09 18:21:34 +02:00
meson.build Drop the deprecated unicore32 target 2021-05-12 18:20:52 +02:00