Changes from v1: * Split into teeny weeny pieces. * It turns out the sparc_tr_tb_stop hunk of v1 was buggy, in that things that are not simple branches use DYNAMIC_PC, e.g. the RETT (return from trap) instruction.
Introduce DYNAMIC_PC_LOOKUP to distinguish the couple of places where we have a dynamic pc, but no other change of state (conditional branches, JMPL, RETURN). * Drop the change for WRFPRS, because it's too infrequent. The WRASI change affects memcpy/memset, so that's more important. Boots Mark's sol8 install cdrom. :-) Top of the profile changes from 41.55% qemu-system-sparc [.] cpu_exec_loop 14.02% qemu-system-sparc [.] cpu_tb_exec 8.74% qemu-system-sparc [.] tb_lookup 2.11% qemu-system-sparc [.] tcg_splitwx_to_rw 1.63% memfd:tcg-jit (deleted) [.] 0x0000000000000004 to 31.59% qemu-system-sparc [.] helper_lookup_tb_ptr 17.79% qemu-system-sparc [.] tb_lookup 5.38% qemu-system-sparc [.] compute_all_sub 2.38% qemu-system-sparc [.] helper_compute_psr 2.36% qemu-system-sparc [.] helper_check_align 1.79% memfd:tcg-jit (deleted) [.] 0x000000000063fc8e This probably indicates that cpu_get_tb_cpu_state could be improved to not consume so much overhead. r~ Richard Henderson (8): target/sparc: Use tcg_gen_lookup_and_goto_ptr in gen_goto_tb target/sparc: Fix npc comparison in sparc_tr_insn_start target/sparc: Drop inline markers from translate.c target/sparc: Introduce DYNAMIC_PC_LOOKUP target/sparc: Use DYNAMIC_PC_LOOKUP for conditional branches target/sparc: Use DYNAMIC_PC_LOOKUP for JMPL target/sparc: Use DYNAMIC_PC_LOOKUP for v9 RETURN target/sparc: Use tcg_gen_lookup_and_goto_ptr for v9 WRASI target/sparc/translate.c | 410 ++++++++++++++++++++++----------------- 1 file changed, 233 insertions(+), 177 deletions(-) -- 2.34.1