Hello, In this version I used a different approach to x86. Splitting TCG i386 and x86_64 makes the code much cleaner. Then instead of regparm(3) calling convention with register passing, I use standard stack based version.
Both i386 and x86_64 hosts work with both Sparc32 and Sparc64 guests. I haven't made performance tests yet, I need to find a setup with better S/N. Test reports welcome. Patches 1 and 2 could be committed separately if there are no objections. URL git://repo.or.cz/qemu/blueswirl.git http://repo.or.cz/r/qemu/blueswirl.git Blue Swirl (6): TCG: split i386 and x86_64 TCG: clean up i386 and x86_64 softmmu templates: optionally pass CPUState to memory access functions TCG: add 5 arg helpers to def-helper.h Sparc: avoid AREG0 for memory access helpers Sparc: avoid AREG0 wrappers for memory access helpers MAINTAINERS | 5 + Makefile.target | 12 +- configure | 9 +- cpu-all.h | 9 + def-helper.h | 26 + exec-all.h | 2 + exec.c | 4 + osdep.h | 2 +- softmmu_defs.h | 28 + 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 | 757 ++++++--------------- tcg/i386/tcg-target.h | 52 +-- 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 | 50 ++- tcg/tci/tcg-target.c | 6 + tcg/x86_64/tcg-target.c | 1651 ++++++++++++++++++++++++++++++++++++++++++++ tcg/x86_64/tcg-target.h | 107 +++ 29 files changed, 2813 insertions(+), 943 deletions(-) delete mode 100644 target-sparc/op_helper.c create mode 100644 tcg/x86_64/tcg-target.c create mode 100644 tcg/x86_64/tcg-target.h -- 1.7.9