32-bit sparc hasn't worked in quite a while. Missing opcodes, incorrect opcodes, unconditional use of ASI_PRIMARY_LITTLE.
This patch set begins by dropping support for pre-v9 sparc. This lets us clean things up quite a bit, using 64-bit load and store operations. I was still having problems with %g6 being clobbered in glibc. Patches 7-10 drop the use of global registers for the sparc port entirely. Given the hoops being used to protect areg0 around calls within the tcg generated code, deferring to a %g7-relative tls access in the helpers is approximately as efficient. As targets are converted to CONFIG_TCG_PASS_AREG0 even this will improve as direct register access is available. r~ Richard Henderson (15): tcg-sparc: Hack in qemu_ld/st64 for 32-bit. tcg-sparc: Fix ADDX opcode. tcg-sparc: Assume v9 cpu always, i.e. force v8plus in 32-bit mode. tcg-sparc: Fix qemu_ld/st to handle 32-bit host. tcg-sparc: Simplify qemu_ld/st direct memory paths. tcg-sparc: Support GUEST_BASE. tcg-sparc: Steamline qemu_ld/st more. Avoid declaring the env variable at all if CONFIG_TCG_PASS_AREG0. tcg-sparc: Do not use a global register for AREG0. tcg-sparc: Change AREG0 in generated code to %i0. tcg-sparc: Clean up cruft stemming from attempts to use global registers. tcg-sparc: Mask shift immediates to avoid illegal insns. tcg-sparc: Use defines for temporaries. tcg-sparc: Add %g/%o registers to alloc_order tcg-sparc: Fix and enable direct TB chaining. configure | 53 +--- dyngen-exec.h | 27 +- exec-all.h | 9 +- exec.c | 16 +- tcg/sparc/tcg-target.c | 951 +++++++++++++++++++++++------------------------- tcg/sparc/tcg-target.h | 34 +- user-exec.c | 17 +- 7 files changed, 520 insertions(+), 587 deletions(-) -- 1.7.7.6