There are a number of inconsistencies with goto_tb usage, and I
plan to make changes in order to better support breakpoints.
(1) Testing CF_LAST_IO is a hold-over from since before ba3e7926691
("icount: clean up cpu_can_io at the entry to the block").
Several targets still have this test.
(2) Testing singlestep is superfluous, as it doesn't mean anything
besides limiting max_insns to 1.
(3) Not testing page crossing for CONFIG_USER_ONLY is wrong, because
mmap and mprotect can change page permissions. It's a very
uncommon case wrt executables, but it's still wrong.
(4) Not testing page crossing for non-mmu targets (where page
permissions literally cannot change) is not currently wrong,
but will be after the breakpoint changes.
(5) When the TB does cross two pages, considering non-page crossing
from the second page is not currently wrong, but will be after
the breakpoint changes.
Based on my recent avr, cris and nios2 patch sets. The full tree is
https://gitlab.com/rth7680/qemu/-/tree/tcg-goto-tb
r~
Richard Henderson (26):
accel/tcg: Introduce translator_use_goto_tb
target/alpha: Remove use_exit_tb
target/alpha: Remove in_superpage
target/alpha: Use translator_use_goto_tb
target/arm: Use translator_use_goto_tb
target/avr: Use translator_use_goto_tb
target/avr: Mark some helpers noreturn
target/cris: Use translator_use_goto_tb
target/hppa: Use translator_use_goto_tb
target/i386: Use translator_use_goto_tb
target/m68k: Use translator_use_goto_tb
target/microblaze: Use translator_use_goto_tb
target/mips: Use translator_use_goto_tb
target/mips: Fix missing else in gen_goto_tb
target/nios2: Use translator_use_goto_tb
target/openrisc: Use translator_use_goto_tb
target/ppc: Use translator_use_goto_tb
target/riscv: Use translator_use_goto_tb
target/rx: Use translator_use_goto_tb
target/s390x: Use translator_use_goto_tb
target/s390x: Remove use_exit_tb
target/sh4: Use translator_use_goto_tb
target/sparc: Use translator_use_goto_tb
target/tricore: Use translator_use_goto_tb
target/tricore: Use tcg_gen_lookup_and_goto_ptr
target/xtensa: Use translator_use_goto_tb
include/exec/translator.h | 10 ++++++++
target/arm/translate.h | 13 ++++++++++
target/avr/helper.h | 8 +++---
accel/tcg/translator.c | 11 +++++++++
target/alpha/translate.c | 46 ++++-------------------------------
target/arm/translate-a64.c | 22 +----------------
target/arm/translate.c | 10 --------
target/avr/translate.c | 9 ++++---
target/cris/translate.c | 5 ++--
target/hppa/translate.c | 5 +---
target/i386/tcg/translate.c | 14 ++---------
target/m68k/translate.c | 12 +--------
target/microblaze/translate.c | 11 +--------
target/mips/tcg/translate.c | 20 +++------------
target/nios2/translate.c | 15 +-----------
target/openrisc/translate.c | 15 ++++++------
target/ppc/translate.c | 10 +-------
target/riscv/translate.c | 20 +--------------
target/rx/translate.c | 11 +--------
target/s390x/translate.c | 18 +++-----------
target/sh4/translate.c | 11 +++------
target/sparc/translate.c | 19 ++++-----------
target/tricore/translate.c | 20 +++------------
target/xtensa/translate.c | 6 +----
24 files changed, 89 insertions(+), 252 deletions(-)
--
2.25.1