In this version, I made basic AREG0 free load/store implementations for all targets. Only x86-64 is tested, others have probably problems, especially 64 bit guest (Sparc64 in this case) on 32 bit hosts.
I think this should be committed as a starting point if there are no major objections. Blue Swirl (6): TCG/i386: use iargs or oargs instead of register names TCG/sparc: use iargs or oargs instead of register names etc TCG: add 5 arg helpers to def-helper.h Sparc: avoid AREG0 for memory access helpers softmmu templates: optionally pass CPUState to memory access functions Sparc: avoid AREG0 wrappers for memory access helpers Makefile.target | 12 +- configure | 7 + cpu-all.h | 9 + def-helper.h | 26 +++ exec-all.h | 2 + exec.c | 4 + softmmu_defs.h | 20 ++ softmmu_header.h | 60 +++++-- softmmu_template.h | 82 ++++++--- target-sparc/cpu.h | 3 +- target-sparc/helper.h | 20 +- target-sparc/ldst_helper.c | 415 ++++++++++++++++++++++++-------------------- target-sparc/op_helper.c | 74 -------- target-sparc/translate.c | 62 ++++--- tcg/arm/tcg-target.c | 53 ++++++ tcg/hppa/tcg-target.c | 44 +++++ tcg/i386/tcg-target.c | 187 ++++++++++++++++----- tcg/ia64/tcg-target.c | 46 +++++ tcg/mips/tcg-target.c | 44 +++++ tcg/ppc/tcg-target.c | 45 +++++ tcg/ppc64/tcg-target.c | 44 +++++ tcg/s390/tcg-target.c | 44 +++++ tcg/sparc/tcg-target.c | 84 +++++++--- tcg/tci/tcg-target.c | 6 + 24 files changed, 987 insertions(+), 406 deletions(-) delete mode 100644 target-sparc/op_helper.c