diff mbox

[21/21] Remove unused CONFIG_TCG_PASS_AREG0 and dead code

Message ID 97e968ba2f5a1b4c398c5e04fc787e1cf589d6d0.1346606813.git.blauwirbel@gmail.com
State New
Headers show

Commit Message

Blue Swirl Sept. 2, 2012, 5:33 p.m. UTC
Now that CONFIG_TCG_PASS_AREG0 is enabled for all targets,
remove dead code and support for !CONFIG_TCG_PASS_AREG0 case.

Remove dyngen-exec.h and all references to it. Although included by
hw/spapr_hcall.c, it does not seem to use it.

Remove unused HELPER_CFLAGS.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
---
 Makefile.target            |    8 -----
 configure                  |   11 -------
 cpu-all.h                  |   11 -------
 cputlb.c                   |    4 --
 dyngen-exec.h              |   70 ------------------------------------------
 exec-all.h                 |    4 --
 hw/spapr_hcall.c           |    1 -
 softmmu_defs.h             |   21 -------------
 softmmu_header.h           |   63 ++++++++++++--------------------------
 softmmu_template.h         |   72 ++++++++++++++++---------------------------
 target-m68k/op_helper.c    |    3 --
 target-sparc/Makefile.objs |    2 -
 tcg/arm/tcg-target.c       |   31 ++-----------------
 tcg/arm/tcg-target.h       |    1 -
 tcg/hppa/tcg-target.c      |   24 --------------
 tcg/hppa/tcg-target.h      |    1 -
 tcg/i386/tcg-target.c      |   30 ------------------
 tcg/i386/tcg-target.h      |    1 -
 tcg/ia64/tcg-target.c      |   34 --------------------
 tcg/ia64/tcg-target.h      |    1 -
 tcg/mips/tcg-target.c      |   31 ++-----------------
 tcg/mips/tcg-target.h      |    1 -
 tcg/ppc/tcg-target.c       |   38 -----------------------
 tcg/ppc64/tcg-target.c     |   28 -----------------
 tcg/s390/tcg-target.c      |   24 --------------
 tcg/s390/tcg-target.h      |    1 -
 tcg/sparc/tcg-target.c     |   30 ------------------
 tcg/sparc/tcg-target.h     |    1 -
 tcg/tci/tcg-target.c       |    4 --
 tci.c                      |   12 -------
 user-exec.c                |   14 --------
 31 files changed, 53 insertions(+), 524 deletions(-)
 delete mode 100644 dyngen-exec.h

Comments

Aurelien Jarno Sept. 6, 2012, 3:30 p.m. UTC | #1
On Sun, Sep 02, 2012 at 05:33:50PM +0000, Blue Swirl wrote:
> Now that CONFIG_TCG_PASS_AREG0 is enabled for all targets,
> remove dead code and support for !CONFIG_TCG_PASS_AREG0 case.
> 
> Remove dyngen-exec.h and all references to it. Although included by
> hw/spapr_hcall.c, it does not seem to use it.
> 
> Remove unused HELPER_CFLAGS.
> 
> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
> ---
>  Makefile.target            |    8 -----
>  configure                  |   11 -------
>  cpu-all.h                  |   11 -------
>  cputlb.c                   |    4 --
>  dyngen-exec.h              |   70 ------------------------------------------
>  exec-all.h                 |    4 --
>  hw/spapr_hcall.c           |    1 -
>  softmmu_defs.h             |   21 -------------
>  softmmu_header.h           |   63 ++++++++++++--------------------------
>  softmmu_template.h         |   72 ++++++++++++++++---------------------------
>  target-m68k/op_helper.c    |    3 --
>  target-sparc/Makefile.objs |    2 -
>  tcg/arm/tcg-target.c       |   31 ++-----------------
>  tcg/arm/tcg-target.h       |    1 -
>  tcg/hppa/tcg-target.c      |   24 --------------
>  tcg/hppa/tcg-target.h      |    1 -
>  tcg/i386/tcg-target.c      |   30 ------------------
>  tcg/i386/tcg-target.h      |    1 -
>  tcg/ia64/tcg-target.c      |   34 --------------------
>  tcg/ia64/tcg-target.h      |    1 -
>  tcg/mips/tcg-target.c      |   31 ++-----------------
>  tcg/mips/tcg-target.h      |    1 -
>  tcg/ppc/tcg-target.c       |   38 -----------------------
>  tcg/ppc64/tcg-target.c     |   28 -----------------
>  tcg/s390/tcg-target.c      |   24 --------------
>  tcg/s390/tcg-target.h      |    1 -
>  tcg/sparc/tcg-target.c     |   30 ------------------
>  tcg/sparc/tcg-target.h     |    1 -
>  tcg/tci/tcg-target.c       |    4 --
>  tci.c                      |   12 -------
>  user-exec.c                |   14 --------
>  31 files changed, 53 insertions(+), 524 deletions(-)
>  delete mode 100644 dyngen-exec.h
> 
> diff --git a/Makefile.target b/Makefile.target
> index 7892a8d..d9d54b8 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -80,14 +80,6 @@ obj-$(CONFIG_GDBSTUB_XML) += gdbstub-xml.o
>  
>  tci-dis.o: QEMU_CFLAGS += -I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/tci
>  
> -# HELPER_CFLAGS is used for all the legacy code compiled with static register
> -# variables
> -user-exec.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
> -
> -# Note: this is a workaround. The real fix is to avoid compiling
> -# cpu_signal_handler() in user-exec.c.
> -%/signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
> -
>  #########################################################
>  # Linux user emulator target
>  
> diff --git a/configure b/configure
> index f60a4b6..e7d333b 100755
> --- a/configure
> +++ b/configure
> @@ -118,7 +118,6 @@ audio_card_list="ac97 es1370 sb16 hda"
>  audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
>  block_drv_whitelist=""
>  host_cc="gcc"
> -helper_cflags=""
>  libs_softmmu=""
>  libs_tools=""
>  audio_pt_int=""
> @@ -894,7 +893,6 @@ case "$cpu" in
>             QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
>             if test "$solaris" = "no" ; then
>               QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
> -             helper_cflags="-ffixed-i0"
>             fi
>             ;;
>      sparc64)
> @@ -919,7 +917,6 @@ case "$cpu" in
>             QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
>             LDFLAGS="-m32 $LDFLAGS"
>             cc_i386='$(CC) -m32'
> -           helper_cflags="-fomit-frame-pointer"
>             host_guest_base="yes"
>             ;;
>      x86_64)
> @@ -3572,7 +3569,6 @@ if test "$sparse" = "yes" ; then
>    echo "HOST_CC      := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
>    echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
>  fi
> -echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
>  echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
>  echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
>  echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
> @@ -3827,13 +3823,6 @@ fi
>  
>  symlink "$source_path/Makefile.target" "$target_dir/Makefile"
>  
> -
> -case "$target_arch2" in
> -  alpha | arm* | cris | i386 | lm32 | m68k | microblaze* | mips* | or32 | s390x | sh4* | sparc* | unicore32 | x86_64 | xtensa* | ppc*)
> -    echo "CONFIG_TCG_PASS_AREG0=y" >> $config_target_mak
> -  ;;
> -esac
> -
>  upper() {
>      echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
>  }
> diff --git a/cpu-all.h b/cpu-all.h
> index 5e07d28..74d3681 100644
> --- a/cpu-all.h
> +++ b/cpu-all.h
> @@ -260,14 +260,6 @@ extern unsigned long reserved_va;
>  #define stfl(p, v) stfl_raw(p, v)
>  #define stfq(p, v) stfq_raw(p, v)
>  
> -#ifndef CONFIG_TCG_PASS_AREG0
> -#define ldub_code(p) ldub_raw(p)
> -#define ldsb_code(p) ldsb_raw(p)
> -#define lduw_code(p) lduw_raw(p)
> -#define ldsw_code(p) ldsw_raw(p)
> -#define ldl_code(p) ldl_raw(p)
> -#define ldq_code(p) ldq_raw(p)
> -#else
>  #define cpu_ldub_code(env1, p) ldub_raw(p)
>  #define cpu_ldsb_code(env1, p) ldsb_raw(p)
>  #define cpu_lduw_code(env1, p) lduw_raw(p)
> @@ -296,7 +288,6 @@ extern unsigned long reserved_va;
>  #define cpu_stw_kernel(env, addr, data) stw_raw(addr, data)
>  #define cpu_stl_kernel(env, addr, data) stl_raw(addr, data)
>  #define cpu_stq_kernel(env, addr, data) stq_raw(addr, data)
> -#endif
>  
>  #define ldub_kernel(p) ldub_raw(p)
>  #define ldsb_kernel(p) ldsb_raw(p)
> @@ -313,7 +304,6 @@ extern unsigned long reserved_va;
>  #define stfl_kernel(p, v) stfl_raw(p, v)
>  #define stfq_kernel(p, vt) stfq_raw(p, v)
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  #define cpu_ldub_data(env, addr) ldub_raw(addr)
>  #define cpu_lduw_data(env, addr) lduw_raw(addr)
>  #define cpu_ldl_data(env, addr) ldl_raw(addr)
> @@ -321,7 +311,6 @@ extern unsigned long reserved_va;
>  #define cpu_stb_data(env, addr, data) stb_raw(addr, data)
>  #define cpu_stw_data(env, addr, data) stw_raw(addr, data)
>  #define cpu_stl_data(env, addr, data) stl_raw(addr, data)
> -#endif
>  #endif /* defined(CONFIG_USER_ONLY) */
>  
>  /* page related stuff */
> diff --git a/cputlb.c b/cputlb.c
> index d3e7b25..8468517 100644
> --- a/cputlb.c
> +++ b/cputlb.c
> @@ -325,11 +325,7 @@ tb_page_addr_t get_page_addr_code(CPUArchState *env1, target_ulong addr)
>      mmu_idx = cpu_mmu_index(env1);
>      if (unlikely(env1->tlb_table[mmu_idx][page_index].addr_code !=
>                   (addr & TARGET_PAGE_MASK))) {
> -#ifdef CONFIG_TCG_PASS_AREG0
>          cpu_ldub_code(env1, addr);
> -#else
> -        ldub_code(addr);
> -#endif
>      }
>      pd = env1->iotlb[mmu_idx][page_index] & ~TARGET_PAGE_MASK;
>      mr = iotlb_to_region(pd);
> diff --git a/dyngen-exec.h b/dyngen-exec.h
> deleted file mode 100644
> index 083e20b..0000000
> --- a/dyngen-exec.h
> +++ /dev/null
> @@ -1,70 +0,0 @@
> -/*
> - *  dyngen defines for micro operation code
> - *
> - *  Copyright (c) 2003 Fabrice Bellard
> - *
> - * This library is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU Lesser General Public
> - * License as published by the Free Software Foundation; either
> - * version 2 of the License, or (at your option) any later version.
> - *
> - * This library is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> - * Lesser General Public License for more details.
> - *
> - * You should have received a copy of the GNU Lesser General Public
> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> - */
> -#if !defined(__DYNGEN_EXEC_H__)
> -#define __DYNGEN_EXEC_H__
> -
> -#if defined(CONFIG_TCG_INTERPRETER)
> -/* The TCG interpreter does not need a special register AREG0,
> - * but it is possible to use one by defining AREG0.
> - * On i386, register edi seems to work. */
> -/* Run without special register AREG0 or use a value defined elsewhere. */
> -#elif defined(__i386__)
> -#define AREG0 "ebp"
> -#elif defined(__x86_64__)
> -#define AREG0 "r14"
> -#elif defined(_ARCH_PPC)
> -#define AREG0 "r27"
> -#elif defined(__arm__)
> -#define AREG0 "r6"
> -#elif defined(__hppa__)
> -#define AREG0 "r17"
> -#elif defined(__mips__)
> -#define AREG0 "s0"
> -#elif defined(__sparc__)
> -#ifdef CONFIG_SOLARIS
> -#define AREG0 "g2"
> -#else
> -#ifdef __sparc_v9__
> -#define AREG0 "g5"
> -#else
> -#define AREG0 "g6"
> -#endif
> -#endif
> -#elif defined(__s390__)
> -#define AREG0 "r10"
> -#elif defined(__alpha__)
> -/* Note $15 is the frame pointer, so anything in op-i386.c that would
> -   require a frame pointer, like alloca, would probably loose.  */
> -#define AREG0 "$15"
> -#elif defined(__mc68000)
> -#define AREG0 "%a5"
> -#elif defined(__ia64__)
> -#define AREG0 "r7"
> -#else
> -#error unsupported CPU
> -#endif
> -
> -#if defined(AREG0)
> -register CPUArchState *env asm(AREG0);
> -#else
> -/* TODO: Try env = cpu_single_env. */
> -extern CPUArchState *env;
> -#endif
> -
> -#endif /* !defined(__DYNGEN_EXEC_H__) */
> diff --git a/exec-all.h b/exec-all.h
> index c5ec8e1..c5d3a13 100644
> --- a/exec-all.h
> +++ b/exec-all.h
> @@ -323,9 +323,6 @@ void tlb_fill(CPUArchState *env1, target_ulong addr, int is_write, int mmu_idx,
>  
>  #define ACCESS_TYPE (NB_MMU_MODES + 1)
>  #define MEMSUFFIX _code
> -#ifndef CONFIG_TCG_PASS_AREG0
> -#define env cpu_single_env
> -#endif
>  
>  #define DATA_SIZE 1
>  #include "softmmu_header.h"
> @@ -341,7 +338,6 @@ void tlb_fill(CPUArchState *env1, target_ulong addr, int is_write, int mmu_idx,
>  
>  #undef ACCESS_TYPE
>  #undef MEMSUFFIX
> -#undef env
>  
>  #endif
>  
> diff --git a/hw/spapr_hcall.c b/hw/spapr_hcall.c
> index a5990a9..abd847f 100644
> --- a/hw/spapr_hcall.c
> +++ b/hw/spapr_hcall.c
> @@ -1,6 +1,5 @@
>  #include "sysemu.h"
>  #include "cpu.h"
> -#include "dyngen-exec.h"
>  #include "qemu-char.h"
>  #include "sysemu.h"
>  #include "qemu-char.h"
> diff --git a/softmmu_defs.h b/softmmu_defs.h
> index 8d59f9d..1f25e33 100644
> --- a/softmmu_defs.h
> +++ b/softmmu_defs.h
> @@ -9,25 +9,6 @@
>  #ifndef SOFTMMU_DEFS_H
>  #define SOFTMMU_DEFS_H
>  
> -#ifndef CONFIG_TCG_PASS_AREG0
> -uint8_t __ldb_mmu(target_ulong addr, int mmu_idx);
> -void __stb_mmu(target_ulong addr, uint8_t val, int mmu_idx);
> -uint16_t __ldw_mmu(target_ulong addr, int mmu_idx);
> -void __stw_mmu(target_ulong addr, uint16_t val, int mmu_idx);
> -uint32_t __ldl_mmu(target_ulong addr, int mmu_idx);
> -void __stl_mmu(target_ulong addr, uint32_t val, int mmu_idx);
> -uint64_t __ldq_mmu(target_ulong addr, int mmu_idx);
> -void __stq_mmu(target_ulong addr, uint64_t val, int mmu_idx);
> -
> -uint8_t __ldb_cmmu(target_ulong addr, int mmu_idx);
> -void __stb_cmmu(target_ulong addr, uint8_t val, int mmu_idx);
> -uint16_t __ldw_cmmu(target_ulong addr, int mmu_idx);
> -void __stw_cmmu(target_ulong addr, uint16_t val, int mmu_idx);
> -uint32_t __ldl_cmmu(target_ulong addr, int mmu_idx);
> -void __stl_cmmu(target_ulong addr, uint32_t val, int mmu_idx);
> -uint64_t __ldq_cmmu(target_ulong addr, int mmu_idx);
> -void __stq_cmmu(target_ulong addr, uint64_t val, int mmu_idx);
> -#else
>  uint8_t helper_ldb_mmu(CPUArchState *env, target_ulong addr, int mmu_idx);
>  void helper_stb_mmu(CPUArchState *env, target_ulong addr, uint8_t val,
>                      int mmu_idx);
> @@ -54,5 +35,3 @@ uint64_t helper_ldq_cmmu(CPUArchState *env, target_ulong addr, int mmu_idx);
>  void helper_stq_cmmu(CPUArchState *env, target_ulong addr, uint64_t val,
>                       int mmu_idx);
>  #endif
> -
> -#endif
> diff --git a/softmmu_header.h b/softmmu_header.h
> index cf1aa38..d8d9c81 100644
> --- a/softmmu_header.h
> +++ b/softmmu_header.h
> @@ -78,23 +78,10 @@
>  #define ADDR_READ addr_read
>  #endif
>  
> -#ifndef CONFIG_TCG_PASS_AREG0
> -#define ENV_PARAM
> -#define ENV_VAR
> -#define CPU_PREFIX
> -#define HELPER_PREFIX __
> -#else
> -#define ENV_PARAM CPUArchState *env,
> -#define ENV_VAR env,
> -#define CPU_PREFIX cpu_
> -#define HELPER_PREFIX helper_
> -#endif
> -
>  /* generic load/store macros */
>  
>  static inline RES_TYPE
> -glue(glue(glue(CPU_PREFIX, ld), USUFFIX), MEMSUFFIX)(ENV_PARAM
> -                                                     target_ulong ptr)
> +glue(glue(cpu_ld, USUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr)
>  {
>      int page_index;
>      RES_TYPE res;
> @@ -106,9 +93,7 @@ glue(glue(glue(CPU_PREFIX, ld), USUFFIX), MEMSUFFIX)(ENV_PARAM
>      mmu_idx = CPU_MMU_INDEX;
>      if (unlikely(env->tlb_table[mmu_idx][page_index].ADDR_READ !=
>                   (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
> -        res = glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_VAR
> -                                                                     addr,
> -                                                                     mmu_idx);
> +        res = glue(glue(helper_ld, SUFFIX), MMUSUFFIX)(env, addr, mmu_idx);
>      } else {
>          uintptr_t hostaddr = addr + env->tlb_table[mmu_idx][page_index].addend;
>          res = glue(glue(ld, USUFFIX), _raw)(hostaddr);
> @@ -118,8 +103,7 @@ glue(glue(glue(CPU_PREFIX, ld), USUFFIX), MEMSUFFIX)(ENV_PARAM
>  
>  #if DATA_SIZE <= 2
>  static inline int
> -glue(glue(glue(CPU_PREFIX, lds), SUFFIX), MEMSUFFIX)(ENV_PARAM
> -                                                     target_ulong ptr)
> +glue(glue(cpu_lds, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr)
>  {
>      int res, page_index;
>      target_ulong addr;
> @@ -130,8 +114,8 @@ glue(glue(glue(CPU_PREFIX, lds), SUFFIX), MEMSUFFIX)(ENV_PARAM
>      mmu_idx = CPU_MMU_INDEX;
>      if (unlikely(env->tlb_table[mmu_idx][page_index].ADDR_READ !=
>                   (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
> -        res = (DATA_STYPE)glue(glue(glue(HELPER_PREFIX, ld), SUFFIX),
> -                               MMUSUFFIX)(ENV_VAR addr, mmu_idx);
> +        res = (DATA_STYPE)glue(glue(helper_ld, SUFFIX),
> +                               MMUSUFFIX)(env, addr, mmu_idx);
>      } else {
>          uintptr_t hostaddr = addr + env->tlb_table[mmu_idx][page_index].addend;
>          res = glue(glue(lds, SUFFIX), _raw)(hostaddr);
> @@ -145,8 +129,8 @@ glue(glue(glue(CPU_PREFIX, lds), SUFFIX), MEMSUFFIX)(ENV_PARAM
>  /* generic store macro */
>  
>  static inline void
> -glue(glue(glue(CPU_PREFIX, st), SUFFIX), MEMSUFFIX)(ENV_PARAM target_ulong ptr,
> -                                                    RES_TYPE v)
> +glue(glue(cpu_st, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr,
> +                                      RES_TYPE v)
>  {
>      int page_index;
>      target_ulong addr;
> @@ -157,8 +141,7 @@ glue(glue(glue(CPU_PREFIX, st), SUFFIX), MEMSUFFIX)(ENV_PARAM target_ulong ptr,
>      mmu_idx = CPU_MMU_INDEX;
>      if (unlikely(env->tlb_table[mmu_idx][page_index].addr_write !=
>                   (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
> -        glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_VAR addr, v,
> -                                                               mmu_idx);
> +        glue(glue(helper_st, SUFFIX), MMUSUFFIX)(env, addr, v, mmu_idx);
>      } else {
>          uintptr_t hostaddr = addr + env->tlb_table[mmu_idx][page_index].addend;
>          glue(glue(st, SUFFIX), _raw)(hostaddr, v);
> @@ -170,52 +153,50 @@ glue(glue(glue(CPU_PREFIX, st), SUFFIX), MEMSUFFIX)(ENV_PARAM target_ulong ptr,
>  #if ACCESS_TYPE != (NB_MMU_MODES + 1)
>  
>  #if DATA_SIZE == 8
> -static inline float64 glue(glue(CPU_PREFIX, ldfq), MEMSUFFIX)(ENV_PARAM
> -                                                              target_ulong ptr)
> +static inline float64 glue(cpu_ldfq, MEMSUFFIX)(CPUArchState *env,
> +                                                target_ulong ptr)
>  {
>      union {
>          float64 d;
>          uint64_t i;
>      } u;
> -    u.i = glue(glue(CPU_PREFIX, ldq), MEMSUFFIX)(ENV_VAR ptr);
> +    u.i = glue(cpu_ldq, MEMSUFFIX)(env, ptr);
>      return u.d;
>  }
>  
> -static inline void glue(glue(CPU_PREFIX, stfq), MEMSUFFIX)(ENV_PARAM
> -                                                           target_ulong ptr,
> -                                                           float64 v)
> +static inline void glue(cpu_stfq, MEMSUFFIX)(CPUArchState *env,
> +                                             target_ulong ptr, float64 v)
>  {
>      union {
>          float64 d;
>          uint64_t i;
>      } u;
>      u.d = v;
> -    glue(glue(CPU_PREFIX, stq), MEMSUFFIX)(ENV_VAR ptr, u.i);
> +    glue(cpu_stq, MEMSUFFIX)(env, ptr, u.i);
>  }
>  #endif /* DATA_SIZE == 8 */
>  
>  #if DATA_SIZE == 4
> -static inline float32 glue(glue(CPU_PREFIX, ldfl), MEMSUFFIX)(ENV_PARAM
> -                                                              target_ulong ptr)
> +static inline float32 glue(cpu_ldfl, MEMSUFFIX)(CPUArchState *env,
> +                                                target_ulong ptr)
>  {
>      union {
>          float32 f;
>          uint32_t i;
>      } u;
> -    u.i = glue(glue(CPU_PREFIX, ldl), MEMSUFFIX)(ENV_VAR ptr);
> +    u.i = glue(cpu_ldl, MEMSUFFIX)(env, ptr);
>      return u.f;
>  }
>  
> -static inline void glue(glue(CPU_PREFIX, stfl), MEMSUFFIX)(ENV_PARAM
> -                                                           target_ulong ptr,
> -                                                           float32 v)
> +static inline void glue(cpu_stfl, MEMSUFFIX)(CPUArchState *env,
> +                                             target_ulong ptr, float32 v)
>  {
>      union {
>          float32 f;
>          uint32_t i;
>      } u;
>      u.f = v;
> -    glue(glue(CPU_PREFIX, stl), MEMSUFFIX)(ENV_VAR ptr, u.i);
> +    glue(cpu_stl, MEMSUFFIX)(env, ptr, u.i);
>  }
>  #endif /* DATA_SIZE == 4 */
>  
> @@ -230,7 +211,3 @@ static inline void glue(glue(CPU_PREFIX, stfl), MEMSUFFIX)(ENV_PARAM
>  #undef CPU_MMU_INDEX
>  #undef MMUSUFFIX
>  #undef ADDR_READ
> -#undef ENV_PARAM
> -#undef ENV_VAR
> -#undef CPU_PREFIX
> -#undef HELPER_PREFIX
> diff --git a/softmmu_template.h b/softmmu_template.h
> index b8bd700..e2490f0 100644
> --- a/softmmu_template.h
> +++ b/softmmu_template.h
> @@ -54,23 +54,11 @@
>  #define ADDR_READ addr_read
>  #endif
>  
> -#ifndef CONFIG_TCG_PASS_AREG0
> -#define ENV_PARAM
> -#define ENV_VAR
> -#define CPU_PREFIX
> -#define HELPER_PREFIX __
> -#else
> -#define ENV_PARAM CPUArchState *env,
> -#define ENV_VAR env,
> -#define CPU_PREFIX cpu_
> -#define HELPER_PREFIX helper_
> -#endif
> -
> -static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
> +static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(CPUArchState *env,
>                                                          target_ulong addr,
>                                                          int mmu_idx,
>                                                          uintptr_t retaddr);
> -static inline DATA_TYPE glue(io_read, SUFFIX)(ENV_PARAM
> +static inline DATA_TYPE glue(io_read, SUFFIX)(CPUArchState *env,
>                                                target_phys_addr_t physaddr,
>                                                target_ulong addr,
>                                                uintptr_t retaddr)
> @@ -104,9 +92,8 @@ static inline DATA_TYPE glue(io_read, SUFFIX)(ENV_PARAM
>  
>  /* handle all cases except unaligned access which span two pages */
>  DATA_TYPE
> -glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
> -                                                       target_ulong addr,
> -                                                       int mmu_idx)
> +glue(glue(helper_ld, SUFFIX), MMUSUFFIX)(CPUArchState *env, target_ulong addr,
> +                                         int mmu_idx)
>  {
>      DATA_TYPE res;
>      int index;
> @@ -126,15 +113,15 @@ glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
>                  goto do_unaligned_access;
>              retaddr = GETPC();
>              ioaddr = env->iotlb[mmu_idx][index];
> -            res = glue(io_read, SUFFIX)(ENV_VAR ioaddr, addr, retaddr);
> +            res = glue(io_read, SUFFIX)(env, ioaddr, addr, retaddr);
>          } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
>              /* slow unaligned access (it spans two pages or IO) */
>          do_unaligned_access:
>              retaddr = GETPC();
>  #ifdef ALIGNED_ONLY
> -            do_unaligned_access(ENV_VAR addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
> +            do_unaligned_access(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
>  #endif
> -            res = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_VAR addr,
> +            res = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(env, addr,
>                                                           mmu_idx, retaddr);
>          } else {
>              /* unaligned/aligned access in the same page */
> @@ -142,7 +129,7 @@ glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
>  #ifdef ALIGNED_ONLY
>              if ((addr & (DATA_SIZE - 1)) != 0) {
>                  retaddr = GETPC();
> -                do_unaligned_access(ENV_VAR addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
> +                do_unaligned_access(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
>              }
>  #endif
>              addend = env->tlb_table[mmu_idx][index].addend;
> @@ -154,7 +141,7 @@ glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
>          retaddr = GETPC();
>  #ifdef ALIGNED_ONLY
>          if ((addr & (DATA_SIZE - 1)) != 0)
> -            do_unaligned_access(ENV_VAR addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
> +            do_unaligned_access(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
>  #endif
>          tlb_fill(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
>          goto redo;
> @@ -164,7 +151,7 @@ glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
>  
>  /* handle all unaligned cases */
>  static DATA_TYPE
> -glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
> +glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(CPUArchState *env,
>                                         target_ulong addr,
>                                         int mmu_idx,
>                                         uintptr_t retaddr)
> @@ -183,15 +170,15 @@ glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
>              if ((addr & (DATA_SIZE - 1)) != 0)
>                  goto do_unaligned_access;
>              ioaddr = env->iotlb[mmu_idx][index];
> -            res = glue(io_read, SUFFIX)(ENV_VAR ioaddr, addr, retaddr);
> +            res = glue(io_read, SUFFIX)(env, ioaddr, addr, retaddr);
>          } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
>          do_unaligned_access:
>              /* slow unaligned access (it spans two pages) */
>              addr1 = addr & ~(DATA_SIZE - 1);
>              addr2 = addr1 + DATA_SIZE;
> -            res1 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_VAR addr1,
> +            res1 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(env, addr1,
>                                                            mmu_idx, retaddr);
> -            res2 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_VAR addr2,
> +            res2 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(env, addr2,
>                                                            mmu_idx, retaddr);
>              shift = (addr & (DATA_SIZE - 1)) * 8;
>  #ifdef TARGET_WORDS_BIGENDIAN
> @@ -216,13 +203,13 @@ glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
>  
>  #ifndef SOFTMMU_CODE_ACCESS
>  
> -static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
> +static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(CPUArchState *env,
>                                                     target_ulong addr,
>                                                     DATA_TYPE val,
>                                                     int mmu_idx,
>                                                     uintptr_t retaddr);
>  
> -static inline void glue(io_write, SUFFIX)(ENV_PARAM
> +static inline void glue(io_write, SUFFIX)(CPUArchState *env,
>                                            target_phys_addr_t physaddr,
>                                            DATA_TYPE val,
>                                            target_ulong addr,
> @@ -253,10 +240,9 @@ static inline void glue(io_write, SUFFIX)(ENV_PARAM
>  #endif /* SHIFT > 2 */
>  }
>  
> -void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
> -                                                            target_ulong addr,
> -                                                            DATA_TYPE val,
> -                                                            int mmu_idx)
> +void glue(glue(helper_st, SUFFIX), MMUSUFFIX)(CPUArchState *env,
> +                                              target_ulong addr, DATA_TYPE val,
> +                                              int mmu_idx)
>  {
>      target_phys_addr_t ioaddr;
>      target_ulong tlb_addr;
> @@ -273,14 +259,14 @@ void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
>                  goto do_unaligned_access;
>              retaddr = GETPC();
>              ioaddr = env->iotlb[mmu_idx][index];
> -            glue(io_write, SUFFIX)(ENV_VAR ioaddr, val, addr, retaddr);
> +            glue(io_write, SUFFIX)(env, ioaddr, val, addr, retaddr);
>          } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
>          do_unaligned_access:
>              retaddr = GETPC();
>  #ifdef ALIGNED_ONLY
> -            do_unaligned_access(ENV_VAR addr, 1, mmu_idx, retaddr);
> +            do_unaligned_access(env, addr, 1, mmu_idx, retaddr);
>  #endif
> -            glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_VAR addr, val,
> +            glue(glue(slow_st, SUFFIX), MMUSUFFIX)(env, addr, val,
>                                                     mmu_idx, retaddr);
>          } else {
>              /* aligned/unaligned access in the same page */
> @@ -288,7 +274,7 @@ void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
>  #ifdef ALIGNED_ONLY
>              if ((addr & (DATA_SIZE - 1)) != 0) {
>                  retaddr = GETPC();
> -                do_unaligned_access(ENV_VAR addr, 1, mmu_idx, retaddr);
> +                do_unaligned_access(env, addr, 1, mmu_idx, retaddr);
>              }
>  #endif
>              addend = env->tlb_table[mmu_idx][index].addend;
> @@ -300,7 +286,7 @@ void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
>          retaddr = GETPC();
>  #ifdef ALIGNED_ONLY
>          if ((addr & (DATA_SIZE - 1)) != 0)
> -            do_unaligned_access(ENV_VAR addr, 1, mmu_idx, retaddr);
> +            do_unaligned_access(env, addr, 1, mmu_idx, retaddr);
>  #endif
>          tlb_fill(env, addr, 1, mmu_idx, retaddr);
>          goto redo;
> @@ -308,7 +294,7 @@ void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
>  }
>  
>  /* handles all unaligned cases */
> -static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
> +static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(CPUArchState *env,
>                                                     target_ulong addr,
>                                                     DATA_TYPE val,
>                                                     int mmu_idx,
> @@ -327,7 +313,7 @@ static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
>              if ((addr & (DATA_SIZE - 1)) != 0)
>                  goto do_unaligned_access;
>              ioaddr = env->iotlb[mmu_idx][index];
> -            glue(io_write, SUFFIX)(ENV_VAR ioaddr, val, addr, retaddr);
> +            glue(io_write, SUFFIX)(env, ioaddr, val, addr, retaddr);
>          } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
>          do_unaligned_access:
>              /* XXX: not efficient, but simple */
> @@ -335,11 +321,11 @@ static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
>               * previous page from the TLB cache.  */
>              for(i = DATA_SIZE - 1; i >= 0; i--) {
>  #ifdef TARGET_WORDS_BIGENDIAN
> -                glue(slow_stb, MMUSUFFIX)(ENV_VAR addr + i,
> +                glue(slow_stb, MMUSUFFIX)(env, addr + i,
>                                            val >> (((DATA_SIZE - 1) * 8) - (i * 8)),
>                                            mmu_idx, retaddr);
>  #else
> -                glue(slow_stb, MMUSUFFIX)(ENV_VAR addr + i,
> +                glue(slow_stb, MMUSUFFIX)(env, addr + i,
>                                            val >> (i * 8),
>                                            mmu_idx, retaddr);
>  #endif
> @@ -366,7 +352,3 @@ static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
>  #undef USUFFIX
>  #undef DATA_SIZE
>  #undef ADDR_READ
> -#undef ENV_PARAM
> -#undef ENV_VAR
> -#undef CPU_PREFIX
> -#undef HELPER_PREFIX
> diff --git a/target-m68k/op_helper.c b/target-m68k/op_helper.c
> index 3116287..aa00504 100644
> --- a/target-m68k/op_helper.c
> +++ b/target-m68k/op_helper.c
> @@ -192,9 +192,6 @@ void HELPER(divu)(CPUM68KState *env, uint32_t word)
>      quot = num / den;
>      rem = num % den;
>      flags = 0;
> -    /* Avoid using a PARAM1 of zero.  This breaks dyngen because it uses
> -       the address of a symbol, and gcc knows symbols can't have address
> -       zero.  */
>      if (word && quot > 0xffff)
>          flags |= CCF_V;
>      if (quot == 0)

I am not sure this hunk really belong to this patch, it should more
likely be moved to the "target-m68k: switch to AREG0 free mode" patch.


> diff --git a/target-sparc/Makefile.objs b/target-sparc/Makefile.objs
> index a93e07d..9fc42ea 100644
> --- a/target-sparc/Makefile.objs
> +++ b/target-sparc/Makefile.objs
> @@ -4,5 +4,3 @@ obj-y += fop_helper.o cc_helper.o win_helper.o mmu_helper.o ldst_helper.o
>  obj-$(TARGET_SPARC) += int32_helper.o
>  obj-$(TARGET_SPARC64) += int64_helper.o
>  obj-$(TARGET_SPARC64) += vis_helper.o
> -
> -$(obj)/op_helper.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
> diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c
> index cf0ca3d..aed3b53 100644
> --- a/tcg/arm/tcg-target.c
> +++ b/tcg/arm/tcg-target.c
> @@ -176,7 +176,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>             so don't use these. */
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1);
> -#if defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
> +#if TARGET_LONG_BITS == 64
>          /* If we're passing env to the helper as r0 and need a regpair
>           * for the address then r2 will be overwritten as we're setting
>           * up the args to the helper.
> @@ -204,8 +204,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>             use these. */
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1);
> -#if defined(CONFIG_SOFTMMU) && \
> -    defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
> +#if defined(CONFIG_SOFTMMU) && (TARGET_LONG_BITS == 64)
>          /* Avoid clashes with registers being used for helper args */
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R2);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
> @@ -223,7 +222,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>  #ifdef CONFIG_SOFTMMU
>          /* r2 is still needed to load data_reg, so don't use it. */
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R2);
> -#if defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
> +#if TARGET_LONG_BITS == 64
>          /* Avoid clashes with registers being used for helper args */
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
>  #endif
> @@ -954,7 +953,6 @@ static inline void tcg_out_goto_label(TCGContext *s, int cond, int label_index)
>  
>  #include "../../softmmu_defs.h"
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>     int mmu_idx) */
>  static const void * const qemu_ld_helpers[4] = {
> @@ -972,25 +970,6 @@ static const void * const qemu_st_helpers[4] = {
>      helper_stl_mmu,
>      helper_stq_mmu,
>  };
> -#else
> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
> -   mmu_idx) */
> -static void *qemu_ld_helpers[4] = {
> -    __ldb_mmu,
> -    __ldw_mmu,
> -    __ldl_mmu,
> -    __ldq_mmu,
> -};
> -
> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
> -   int mmu_idx) */
> -static void *qemu_st_helpers[4] = {
> -    __stb_mmu,
> -    __stw_mmu,
> -    __stl_mmu,
> -    __stq_mmu,
> -};
> -#endif
>  
>  /* Helper routines for marshalling helper function arguments into
>   * the correct registers and stack.
> @@ -1203,9 +1182,7 @@ static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>       * trash by moving the earlier arguments into them.
>       */
>      argreg = TCG_REG_R0;
> -#ifdef CONFIG_TCG_PASS_AREG0
>      argreg = tcg_out_arg_reg32(s, argreg, TCG_AREG0);
> -#endif
>  #if TARGET_LONG_BITS == 64
>      argreg = tcg_out_arg_reg64(s, argreg, addr_reg, addr_reg2);
>  #else
> @@ -1421,9 +1398,7 @@ static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>       * trash by moving the earlier arguments into them.
>       */
>      argreg = TCG_REG_R0;
> -#ifdef CONFIG_TCG_PASS_AREG0
>      argreg = tcg_out_arg_reg32(s, argreg, TCG_AREG0);
> -#endif
>  #if TARGET_LONG_BITS == 64
>      argreg = tcg_out_arg_reg64(s, argreg, addr_reg, addr_reg2);
>  #else
> diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h
> index f90b834..c0b8f72 100644
> --- a/tcg/arm/tcg-target.h
> +++ b/tcg/arm/tcg-target.h
> @@ -77,7 +77,6 @@ typedef enum {
>  #define TCG_TARGET_HAS_GUEST_BASE
>  
>  enum {
> -    /* Note: must be synced with dyngen-exec.h */
>      TCG_AREG0 = TCG_REG_R6,
>  };
>  
> diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
> index 2885212..8b81b70 100644
> --- a/tcg/hppa/tcg-target.c
> +++ b/tcg/hppa/tcg-target.c
> @@ -882,7 +882,6 @@ static void tcg_out_setcond2(TCGContext *s, int cond, TCGArg ret,
>  #if defined(CONFIG_SOFTMMU)
>  #include "../../softmmu_defs.h"
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>     int mmu_idx) */
>  static const void * const qemu_ld_helpers[4] = {
> @@ -900,25 +899,6 @@ static const void * const qemu_st_helpers[4] = {
>      helper_stl_mmu,
>      helper_stq_mmu,
>  };
> -#else
> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
> -   mmu_idx) */
> -static void *qemu_ld_helpers[4] = {
> -    __ldb_mmu,
> -    __ldw_mmu,
> -    __ldl_mmu,
> -    __ldq_mmu,
> -};
> -
> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
> -   int mmu_idx) */
> -static void *qemu_st_helpers[4] = {
> -    __stb_mmu,
> -    __stw_mmu,
> -    __stl_mmu,
> -    __stq_mmu,
> -};
> -#endif
>  
>  /* Load and compare a TLB entry, and branch if TLB miss.  OFFSET is set to
>     the offset of the first ADDR_READ or ADDR_WRITE member of the appropriate
> @@ -1085,7 +1065,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>      }
>      tcg_out_movi(s, TCG_TYPE_I32, argreg, mem_index);
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>      /* XXX/FIXME: suboptimal */
>      tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[2],
>                  tcg_target_call_iarg_regs[1]);
> @@ -1093,7 +1072,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>                  tcg_target_call_iarg_regs[0]);
>      tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>                  TCG_AREG0);
> -#endif
>      tcg_out_call(s, qemu_ld_helpers[opc & 3]);
>  
>      switch (opc) {
> @@ -1245,7 +1223,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>          tcg_abort();
>      }
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>      /* XXX/FIXME: suboptimal */
>      tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
>                  tcg_target_call_iarg_regs[2]);
> @@ -1255,7 +1232,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>                  tcg_target_call_iarg_regs[0]);
>      tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>                  TCG_AREG0);
> -#endif
>      tcg_out_call(s, qemu_st_helpers[opc]);
>  
>      /* label2: */
> diff --git a/tcg/hppa/tcg-target.h b/tcg/hppa/tcg-target.h
> index d4bf6fe..01ef960 100644
> --- a/tcg/hppa/tcg-target.h
> +++ b/tcg/hppa/tcg-target.h
> @@ -104,7 +104,6 @@ typedef enum {
>  
>  #define TCG_TARGET_HAS_GUEST_BASE
>  
> -/* Note: must be synced with dyngen-exec.h */
>  #define TCG_AREG0 TCG_REG_R17
>  
>  
> diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
> index da17bba..34c2df8 100644
> --- a/tcg/i386/tcg-target.c
> +++ b/tcg/i386/tcg-target.c
> @@ -183,9 +183,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>              tcg_regset_set32(ct->u.regs, 0, 0xffff);
>              tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[0]);
>              tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[1]);
> -#ifdef CONFIG_TCG_PASS_AREG0
>              tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[2]);
> -#endif
>          } else {
>              tcg_regset_set32(ct->u.regs, 0, 0xff);
>              tcg_regset_reset_reg(ct->u.regs, TCG_REG_EAX);
> @@ -965,7 +963,6 @@ static void tcg_out_jmp(TCGContext *s, tcg_target_long dest)
>  
>  #include "../../softmmu_defs.h"
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>     int mmu_idx) */
>  static const void *qemu_ld_helpers[4] = {
> @@ -983,25 +980,6 @@ static const void *qemu_st_helpers[4] = {
>      helper_stl_mmu,
>      helper_stq_mmu,
>  };
> -#else
> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
> -   mmu_idx) */
> -static void *qemu_ld_helpers[4] = {
> -    __ldb_mmu,
> -    __ldw_mmu,
> -    __ldl_mmu,
> -    __ldq_mmu,
> -};
> -
> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
> -   int mmu_idx) */
> -static void *qemu_st_helpers[4] = {
> -    __stb_mmu,
> -    __stw_mmu,
> -    __stl_mmu,
> -    __stq_mmu,
> -};
> -#endif
>  
>  /* Perform the TLB load and compare.
>  
> @@ -1220,16 +1198,13 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>      }
>      tcg_out_push(s, args[addrlo_idx]);
>      stack_adjust += 4;
> -#ifdef CONFIG_TCG_PASS_AREG0
>      tcg_out_push(s, TCG_AREG0);
>      stack_adjust += 4;
> -#endif
>  #else
>      /* The first argument is already loaded with addrlo.  */
>      arg_idx = 1;
>      tcg_out_movi(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[arg_idx],
>                   mem_index);
> -#ifdef CONFIG_TCG_PASS_AREG0
>      /* XXX/FIXME: suboptimal */
>      tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[3],
>                  tcg_target_call_iarg_regs[2]);
> @@ -1240,7 +1215,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>      tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[0],
>                  TCG_AREG0);
>  #endif
> -#endif
>  
>      tcg_out_calli(s, (tcg_target_long)qemu_ld_helpers[s_bits]);
>  
> @@ -1436,16 +1410,13 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
>      }
>      tcg_out_push(s, args[addrlo_idx]);
>      stack_adjust += 4;
> -#ifdef CONFIG_TCG_PASS_AREG0
>      tcg_out_push(s, TCG_AREG0);
>      stack_adjust += 4;
> -#endif
>  #else
>      tcg_out_mov(s, (opc == 3 ? TCG_TYPE_I64 : TCG_TYPE_I32),
>                  tcg_target_call_iarg_regs[1], data_reg);
>      tcg_out_movi(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[2], mem_index);
>      stack_adjust = 0;
> -#ifdef CONFIG_TCG_PASS_AREG0
>      /* XXX/FIXME: suboptimal */
>      tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[3],
>                  tcg_target_call_iarg_regs[2]);
> @@ -1456,7 +1427,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
>      tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[0],
>                  TCG_AREG0);
>  #endif
> -#endif
>  
>      tcg_out_calli(s, (tcg_target_long)qemu_st_helpers[s_bits]);
>  
> diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
> index c3cfe05..8be42f3 100644
> --- a/tcg/i386/tcg-target.h
> +++ b/tcg/i386/tcg-target.h
> @@ -116,7 +116,6 @@ typedef enum {
>  
>  #define TCG_TARGET_HAS_GUEST_BASE
>  
> -/* Note: must be synced with dyngen-exec.h */
>  #if TCG_TARGET_REG_BITS == 64
>  # define TCG_AREG0 TCG_REG_R14
>  #else
> diff --git a/tcg/ia64/tcg-target.c b/tcg/ia64/tcg-target.c
> index dc588db..1745038 100644
> --- a/tcg/ia64/tcg-target.c
> +++ b/tcg/ia64/tcg-target.c
> @@ -1452,7 +1452,6 @@ static inline void tcg_out_qemu_tlb(TCGContext *s, TCGArg addr_reg,
>                                 TCG_REG_P7, TCG_REG_R3, TCG_REG_R57));
>  }
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>     int mmu_idx) */
>  static const void * const qemu_ld_helpers[4] = {
> @@ -1461,16 +1460,6 @@ static const void * const qemu_ld_helpers[4] = {
>      helper_ldl_mmu,
>      helper_ldq_mmu,
>  };
> -#else
> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
> -   mmu_idx) */
> -static void *qemu_ld_helpers[4] = {
> -    __ldb_mmu,
> -    __ldw_mmu,
> -    __ldl_mmu,
> -    __ldq_mmu,
> -};
> -#endif
>  
>  static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>  {
> @@ -1530,7 +1519,6 @@ static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>                         tcg_opc_m1 (TCG_REG_P7, OPC_LD8_M1, TCG_REG_R1, TCG_REG_R2),
>                         tcg_opc_i18(TCG_REG_P0, OPC_NOP_I18, 0));
>      }
> -#ifdef CONFIG_TCG_PASS_AREG0
>      /* XXX/FIXME: suboptimal */
>      tcg_out_bundle(s, mII,
>                     tcg_opc_a5 (TCG_REG_P7, OPC_ADDL_A5, TCG_REG_R58,
> @@ -1539,7 +1527,6 @@ static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>                                 TCG_REG_R57, 0, TCG_REG_R56),
>                     tcg_opc_a4 (TCG_REG_P7, OPC_ADDS_A4,
>                                 TCG_REG_R56, 0, TCG_AREG0));
> -#endif
>      if (!bswap || s_bits == 0) {
>          tcg_out_bundle(s, miB,
>                         tcg_opc_m48(TCG_REG_P0, OPC_NOP_M48, 0),
> @@ -1570,7 +1557,6 @@ static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>      }
>  }
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  /* helper signature: helper_st_mmu(CPUState *env, target_ulong addr,
>     uintxx_t val, int mmu_idx) */
>  static const void * const qemu_st_helpers[4] = {
> @@ -1579,16 +1565,6 @@ static const void * const qemu_st_helpers[4] = {
>      helper_stl_mmu,
>      helper_stq_mmu,
>  };
> -#else
> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
> -   int mmu_idx) */
> -static void *qemu_st_helpers[4] = {
> -    __stb_mmu,
> -    __stw_mmu,
> -    __stl_mmu,
> -    __stq_mmu,
> -};
> -#endif
>  
>  static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>  {
> @@ -1658,7 +1634,6 @@ static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>          data_reg = TCG_REG_R2;
>      }
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>      /* XXX/FIXME: suboptimal */
>      tcg_out_bundle(s, mII,
>                     tcg_opc_a5 (TCG_REG_P7, OPC_ADDL_A5, TCG_REG_R59,
> @@ -1674,15 +1649,6 @@ static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>                                 TCG_REG_R56, 0, TCG_AREG0),
>                     tcg_opc_b5 (TCG_REG_P7, OPC_BR_CALL_SPTK_MANY_B5,
>                                 TCG_REG_B0, TCG_REG_B6));
> -#else
> -    tcg_out_bundle(s, miB,
> -                   tcg_opc_m4 (TCG_REG_P6, opc_st_m4[opc],
> -                               data_reg, TCG_REG_R3),
> -                   tcg_opc_a5 (TCG_REG_P7, OPC_ADDL_A5, TCG_REG_R58,
> -                               mem_index, TCG_REG_R0),
> -                   tcg_opc_b5 (TCG_REG_P7, OPC_BR_CALL_SPTK_MANY_B5,
> -                               TCG_REG_B0, TCG_REG_B6));
> -#endif
>  }
>  
>  #else /* !CONFIG_SOFTMMU */
> diff --git a/tcg/ia64/tcg-target.h b/tcg/ia64/tcg-target.h
> index 0631b9f..c22962a 100644
> --- a/tcg/ia64/tcg-target.h
> +++ b/tcg/ia64/tcg-target.h
> @@ -140,7 +140,6 @@ typedef enum {
>  #define TCG_TARGET_HAS_not_i32          0 /* xor r1, -1, r3 */
>  #define TCG_TARGET_HAS_not_i64          0 /* xor r1, -1, r3 */
>  
> -/* Note: must be synced with dyngen-exec.h */
>  #define TCG_AREG0 TCG_REG_R7
>  
>  /* Guest base is supported */
> diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c
> index 1006e28..74db83d 100644
> --- a/tcg/mips/tcg-target.c
> +++ b/tcg/mips/tcg-target.c
> @@ -217,7 +217,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>          tcg_regset_set(ct->u.regs, 0xffffffff);
>  #if defined(CONFIG_SOFTMMU)
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0);
> -# if defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
> +# if (TARGET_LONG_BITS == 64)
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A2);
>  # endif
>  #endif
> @@ -227,12 +227,11 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>          tcg_regset_set(ct->u.regs, 0xffffffff);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0);
>  #if defined(CONFIG_SOFTMMU)
> -# if (defined(CONFIG_TCG_PASS_AREG0) && TARGET_LONG_BITS == 32) || \
> -     (!defined(CONFIG_TCG_PASS_AREG0) && TARGET_LONG_BITS == 64)
> +# if (TARGET_LONG_BITS == 32)
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A1);
>  # endif
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A2);
> -# if defined(CONFIG_TCG_PASS_AREG0) && TARGET_LONG_BITS == 64
> +# if TARGET_LONG_BITS == 64
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A3);
>  # endif
>  #endif
> @@ -821,7 +820,6 @@ static void tcg_out_setcond2(TCGContext *s, TCGCond cond, int ret,
>  
>  #include "../../softmmu_defs.h"
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>     int mmu_idx) */
>  static const void * const qemu_ld_helpers[4] = {
> @@ -839,25 +837,6 @@ static const void * const qemu_st_helpers[4] = {
>      helper_stl_mmu,
>      helper_stq_mmu,
>  };
> -#else
> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
> -   mmu_idx) */
> -static void *qemu_ld_helpers[4] = {
> -    __ldb_mmu,
> -    __ldw_mmu,
> -    __ldl_mmu,
> -    __ldq_mmu,
> -};
> -
> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
> -   int mmu_idx) */
> -static void *qemu_st_helpers[4] = {
> -    __stb_mmu,
> -    __stw_mmu,
> -    __stl_mmu,
> -    __stq_mmu,
> -};
> -#endif
>  #endif
>  
>  static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
> @@ -942,9 +921,7 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>  
>      /* slow path */
>      arg_num = 0;
> -# ifdef CONFIG_TCG_PASS_AREG0
>      tcg_out_call_iarg_reg32(s, &arg_num, TCG_AREG0);
> -# endif
>  # if TARGET_LONG_BITS == 64
>      tcg_out_call_iarg_reg64(s, &arg_num, addr_regl, addr_regh);
>  # else
> @@ -1127,9 +1104,7 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
>  
>      /* slow path */
>      arg_num = 0;
> -# ifdef CONFIG_TCG_PASS_AREG0
>      tcg_out_call_iarg_reg32(s, &arg_num, TCG_AREG0);
> -# endif
>  # if TARGET_LONG_BITS == 64
>      tcg_out_call_iarg_reg64(s, &arg_num, addr_regl, addr_regh);
>  # else
> diff --git a/tcg/mips/tcg-target.h b/tcg/mips/tcg-target.h
> index d3c804d..1c61931 100644
> --- a/tcg/mips/tcg-target.h
> +++ b/tcg/mips/tcg-target.h
> @@ -96,7 +96,6 @@ typedef enum {
>  #define TCG_TARGET_HAS_ext8u_i32        0 /* andi rt, rs, 0xff   */
>  #define TCG_TARGET_HAS_ext16u_i32       0 /* andi rt, rs, 0xffff */
>  
> -/* Note: must be synced with dyngen-exec.h */
>  #define TCG_AREG0 TCG_REG_S0
>  
>  /* guest base is supported */
> diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
> index 0cff181..26c4b33 100644
> --- a/tcg/ppc/tcg-target.c
> +++ b/tcg/ppc/tcg-target.c
> @@ -248,7 +248,6 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>          tcg_regset_set32(ct->u.regs, 0, 0xffffffff);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4);
> -#ifdef CONFIG_TCG_PASS_AREG0
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
>  #if TARGET_LONG_BITS == 64
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
> @@ -256,11 +255,6 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R7);
>  #endif
>  #endif
> -#else /* !AREG0 */
> -#if TARGET_LONG_BITS == 64
> -        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
> -#endif
> -#endif
>          break;
>      case 'K':                   /* qemu_st[8..32] constraint */
>          ct->ct |= TCG_CT_REG;
> @@ -268,7 +262,6 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
> -#ifdef CONFIG_TCG_PASS_AREG0
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
>  #if TARGET_LONG_BITS == 64
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R7);
> @@ -276,11 +269,6 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R8);
>  #endif
>  #endif
> -#else /* !AREG0 */
> -#if TARGET_LONG_BITS == 64
> -        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
> -#endif
> -#endif
>          break;
>      case 'M':                   /* qemu_st64 constraint */
>          ct->ct |= TCG_CT_REG;
> @@ -290,12 +278,10 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R7);
> -#if defined(CONFIG_TCG_PASS_AREG0)
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R8);
>  #ifdef TCG_TARGET_CALL_ALIGN_ARGS
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R9);
>  #endif
> -#endif
>          break;
>  #else
>      case 'L':
> @@ -541,7 +527,6 @@ static void tcg_out_call (TCGContext *s, tcg_target_long arg, int const_arg)
>  
>  #include "../../softmmu_defs.h"
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>     int mmu_idx) */
>  static const void * const qemu_ld_helpers[4] = {
> @@ -559,25 +544,6 @@ static const void * const qemu_st_helpers[4] = {
>      helper_stl_mmu,
>      helper_stq_mmu,
>  };
> -#else
> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
> -   mmu_idx) */
> -static void *qemu_ld_helpers[4] = {
> -    __ldb_mmu,
> -    __ldw_mmu,
> -    __ldl_mmu,
> -    __ldq_mmu,
> -};
> -
> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
> -   mmu_idx) */
> -static void *qemu_st_helpers[4] = {
> -    __stb_mmu,
> -    __stw_mmu,
> -    __stl_mmu,
> -    __stq_mmu,
> -};
> -#endif
>  #endif
>  
>  static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc)
> @@ -647,9 +613,7 @@ static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc)
>  
>      /* slow path */
>      ir = 3;
> -#ifdef CONFIG_TCG_PASS_AREG0
>      tcg_out_mov (s, TCG_TYPE_I32, ir++, TCG_AREG0);
> -#endif
>  #if TARGET_LONG_BITS == 32
>      tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg);
>  #else
> @@ -849,9 +813,7 @@ static void tcg_out_qemu_st (TCGContext *s, const TCGArg *args, int opc)
>  
>      /* slow path */
>      ir = 3;
> -#ifdef CONFIG_TCG_PASS_AREG0
>      tcg_out_mov (s, TCG_TYPE_I32, ir++, TCG_AREG0);
> -#endif
>  #if TARGET_LONG_BITS == 32
>      tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg);
>  #else
> diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c
> index 27a0ae8..337cd41 100644
> --- a/tcg/ppc64/tcg-target.c
> +++ b/tcg/ppc64/tcg-target.c
> @@ -235,10 +235,8 @@ static int target_parse_constraint (TCGArgConstraint *ct, const char **pct_str)
>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R3);
>  #ifdef CONFIG_SOFTMMU
>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R4);
> -#ifdef CONFIG_TCG_PASS_AREG0
>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R5);
>  #endif
> -#endif
>          break;
>      case 'S':                   /* qemu_st constraint */
>          ct->ct |= TCG_CT_REG;
> @@ -247,10 +245,8 @@ static int target_parse_constraint (TCGArgConstraint *ct, const char **pct_str)
>  #ifdef CONFIG_SOFTMMU
>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R4);
>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R5);
> -#ifdef CONFIG_TCG_PASS_AREG0
>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R6);
>  #endif
> -#endif
>          break;
>      case 'Z':
>          ct->ct |= TCG_CT_CONST_U32;
> @@ -558,7 +554,6 @@ static void tcg_out_ldsta (TCGContext *s, int ret, int addr,
>  
>  #include "../../softmmu_defs.h"
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>     int mmu_idx) */
>  static const void * const qemu_ld_helpers[4] = {
> @@ -576,25 +571,6 @@ static const void * const qemu_st_helpers[4] = {
>      helper_stl_mmu,
>      helper_stq_mmu,
>  };
> -#else
> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
> -   mmu_idx) */
> -static void *qemu_ld_helpers[4] = {
> -    __ldb_mmu,
> -    __ldw_mmu,
> -    __ldl_mmu,
> -    __ldq_mmu,
> -};
> -
> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
> -   int mmu_idx) */
> -static void *qemu_st_helpers[4] = {
> -    __stb_mmu,
> -    __stw_mmu,
> -    __stl_mmu,
> -    __stq_mmu,
> -};
> -#endif
>  
>  static void tcg_out_tlb_read (TCGContext *s, int r0, int r1, int r2,
>                                int addr_reg, int s_bits, int offset)
> @@ -676,9 +652,7 @@ static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc)
>  
>      /* slow path */
>      ir = 3;
> -#ifdef CONFIG_TCG_PASS_AREG0
>      tcg_out_mov (s, TCG_TYPE_I64, ir++, TCG_AREG0);
> -#endif
>      tcg_out_mov (s, TCG_TYPE_I64, ir++, addr_reg);
>      tcg_out_movi (s, TCG_TYPE_I64, ir++, mem_index);
>  
> @@ -827,9 +801,7 @@ static void tcg_out_qemu_st (TCGContext *s, const TCGArg *args, int opc)
>  
>      /* slow path */
>      ir = 3;
> -#ifdef CONFIG_TCG_PASS_AREG0
>      tcg_out_mov (s, TCG_TYPE_I64, ir++, TCG_AREG0);
> -#endif
>      tcg_out_mov (s, TCG_TYPE_I64, ir++, addr_reg);
>      tcg_out_rld (s, RLDICL, ir++, data_reg, 0, 64 - (1 << (3 + opc)));
>      tcg_out_movi (s, TCG_TYPE_I64, ir++, mem_index);
> diff --git a/tcg/s390/tcg-target.c b/tcg/s390/tcg-target.c
> index 04662c1..965e1d4 100644
> --- a/tcg/s390/tcg-target.c
> +++ b/tcg/s390/tcg-target.c
> @@ -301,7 +301,6 @@ static const uint8_t tcg_cond_to_ltr_cond[10] = {
>  
>  #include "../../softmmu_defs.h"
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>     int mmu_idx) */
>  static const void * const qemu_ld_helpers[4] = {
> @@ -319,25 +318,6 @@ static const void * const qemu_st_helpers[4] = {
>      helper_stl_mmu,
>      helper_stq_mmu,
>  };
> -#else
> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
> -   mmu_idx) */
> -static void *qemu_ld_helpers[4] = {
> -    __ldb_mmu,
> -    __ldw_mmu,
> -    __ldl_mmu,
> -    __ldq_mmu,
> -};
> -
> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
> -   int mmu_idx) */
> -static void *qemu_st_helpers[4] = {
> -    __stb_mmu,
> -    __stw_mmu,
> -    __stl_mmu,
> -    __stq_mmu,
> -};
> -#endif
>  #endif
>  
>  static uint8_t *tb_ret_addr;
> @@ -1507,7 +1487,6 @@ static void tcg_prepare_qemu_ldst(TCGContext* s, TCGReg data_reg,
>              tcg_abort();
>          }
>          tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R4, mem_index);
> -#ifdef CONFIG_TCG_PASS_AREG0
>          /* XXX/FIXME: suboptimal */
>          tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[2],
>                      tcg_target_call_iarg_regs[1]);
> @@ -1515,11 +1494,9 @@ static void tcg_prepare_qemu_ldst(TCGContext* s, TCGReg data_reg,
>                      tcg_target_call_iarg_regs[0]);
>          tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>                      TCG_AREG0);
> -#endif
>          tgen_calli(s, (tcg_target_ulong)qemu_st_helpers[s_bits]);
>      } else {
>          tcg_out_movi(s, TCG_TYPE_I32, arg1, mem_index);
> -#ifdef CONFIG_TCG_PASS_AREG0
>          /* XXX/FIXME: suboptimal */
>          tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
>                      tcg_target_call_iarg_regs[2]);
> @@ -1529,7 +1506,6 @@ static void tcg_prepare_qemu_ldst(TCGContext* s, TCGReg data_reg,
>                      tcg_target_call_iarg_regs[0]);
>          tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>                      TCG_AREG0);
> -#endif
>          tgen_calli(s, (tcg_target_ulong)qemu_ld_helpers[s_bits]);
>  
>          /* sign extension */
> diff --git a/tcg/s390/tcg-target.h b/tcg/s390/tcg-target.h
> index d12f90b..4f7dfab 100644
> --- a/tcg/s390/tcg-target.h
> +++ b/tcg/s390/tcg-target.h
> @@ -96,7 +96,6 @@ typedef enum TCGReg {
>  #define TCG_TARGET_EXTEND_ARGS 1
>  
>  enum {
> -    /* Note: must be synced with dyngen-exec.h */
>      TCG_AREG0 = TCG_REG_R10,
>  };
>  
> diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c
> index 247a278..baed3b4 100644
> --- a/tcg/sparc/tcg-target.c
> +++ b/tcg/sparc/tcg-target.c
> @@ -59,11 +59,7 @@ static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
>  };
>  #endif
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  #define ARG_OFFSET 1
> -#else
> -#define ARG_OFFSET 0
> -#endif
>  
>  static const int tcg_target_reg_alloc_order[] = {
>      TCG_REG_L0,
> @@ -161,9 +157,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_O0);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_O1);
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_O2);
> -#ifdef CONFIG_TCG_PASS_AREG0
>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_O3);
> -#endif
>          break;
>      case 'I':
>          ct->ct |= TCG_CT_CONST_S11;
> @@ -715,7 +709,6 @@ static void tcg_target_qemu_prologue(TCGContext *s)
>  
>  #include "../../softmmu_defs.h"
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>     int mmu_idx) */
>  static const void * const qemu_ld_helpers[4] = {
> @@ -733,25 +726,6 @@ static const void * const qemu_st_helpers[4] = {
>      helper_stl_mmu,
>      helper_stq_mmu,
>  };
> -#else
> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
> -   mmu_idx) */
> -static const void * const qemu_ld_helpers[4] = {
> -    __ldb_mmu,
> -    __ldw_mmu,
> -    __ldl_mmu,
> -    __ldq_mmu,
> -};
> -
> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
> -   int mmu_idx) */
> -static const void * const qemu_st_helpers[4] = {
> -    __stb_mmu,
> -    __stw_mmu,
> -    __stl_mmu,
> -    __stq_mmu,
> -};
> -#endif
>  #endif
>  
>  #if TARGET_LONG_BITS == 32
> @@ -834,7 +808,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>  
>      /* mov */
>      tcg_out_movi(s, TCG_TYPE_I32, arg1, mem_index);
> -#ifdef CONFIG_TCG_PASS_AREG0
>      /* XXX/FIXME: suboptimal */
>      tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
>                  tcg_target_call_iarg_regs[2]);
> @@ -844,7 +817,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>                  tcg_target_call_iarg_regs[0]);
>      tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>                  TCG_AREG0);
> -#endif
>  
>      /* XXX: move that code at the end of the TB */
>      /* qemu_ld_helper[s_bits](arg0, arg1) */
> @@ -1061,7 +1033,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
>      /* mov */
>      tcg_out_movi(s, TCG_TYPE_I32, arg2, mem_index);
>  
> -#ifdef CONFIG_TCG_PASS_AREG0
>      /* XXX/FIXME: suboptimal */
>      tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
>                  tcg_target_call_iarg_regs[2]);
> @@ -1071,7 +1042,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
>                  tcg_target_call_iarg_regs[0]);
>      tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>                  TCG_AREG0);
> -#endif
>      /* XXX: move that code at the end of the TB */
>      /* qemu_st_helper[s_bits](arg0, arg1, arg2) */
>      tcg_out32(s, CALL | ((((tcg_target_ulong)qemu_st_helpers[s_bits]
> diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h
> index ee2274d..0ea87be 100644
> --- a/tcg/sparc/tcg-target.h
> +++ b/tcg/sparc/tcg-target.h
> @@ -125,7 +125,6 @@ typedef enum {
>  #define TCG_TARGET_HAS_deposit_i64      0
>  #endif
>  
> -/* Note: must be synced with dyngen-exec.h */
>  #ifdef CONFIG_SOLARIS
>  #define TCG_AREG0 TCG_REG_G2
>  #elif defined(__sparc_v9__)
> diff --git a/tcg/tci/tcg-target.c b/tcg/tci/tcg-target.c
> index ef8580f..003244c 100644
> --- a/tcg/tci/tcg-target.c
> +++ b/tcg/tci/tcg-target.c
> @@ -798,9 +798,7 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
>      case INDEX_op_qemu_st8:
>      case INDEX_op_qemu_st16:
>      case INDEX_op_qemu_st32:
> -#ifdef CONFIG_TCG_PASS_AREG0
>          tcg_out_r(s, TCG_AREG0);
> -#endif
>          tcg_out_r(s, *args++);
>          tcg_out_r(s, *args++);
>  #if TARGET_LONG_BITS > TCG_TARGET_REG_BITS
> @@ -811,9 +809,7 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
>  #endif
>          break;
>      case INDEX_op_qemu_st64:
> -#ifdef CONFIG_TCG_PASS_AREG0
>          tcg_out_r(s, TCG_AREG0);
> -#endif
>          tcg_out_r(s, *args++);
>  #if TCG_TARGET_REG_BITS == 32
>          tcg_out_r(s, *args++);
> diff --git a/tci.c b/tci.c
> index c79350d..ce8a988 100644
> --- a/tci.c
> +++ b/tci.c
> @@ -25,7 +25,6 @@
>  #endif
>  
>  #include "qemu-common.h"
> -#include "dyngen-exec.h"        /* env */
>  #include "exec-all.h"           /* MAX_OPC_PARAM_IARGS */
>  #include "tcg-op.h"
>  
> @@ -63,17 +62,6 @@ uintptr_t tci_tb_ptr;
>  
>  static tcg_target_ulong tci_reg[TCG_TARGET_NB_REGS];
>  
> -#if !defined(CONFIG_TCG_PASS_AREG0)
> -# define helper_ldb_mmu(env, addr, mmu_idx) __ldb_mmu(addr, mmu_idx)
> -# define helper_ldw_mmu(env, addr, mmu_idx) __ldw_mmu(addr, mmu_idx)
> -# define helper_ldl_mmu(env, addr, mmu_idx) __ldl_mmu(addr, mmu_idx)
> -# define helper_ldq_mmu(env, addr, mmu_idx) __ldq_mmu(addr, mmu_idx)
> -# define helper_stb_mmu(env, addr, val, mmu_idx) __stb_mmu(addr, val, mmu_idx)
> -# define helper_stw_mmu(env, addr, val, mmu_idx) __stw_mmu(addr, val, mmu_idx)
> -# define helper_stl_mmu(env, addr, val, mmu_idx) __stl_mmu(addr, val, mmu_idx)
> -# define helper_stq_mmu(env, addr, val, mmu_idx) __stq_mmu(addr, val, mmu_idx)
> -#endif /* !CONFIG_TCG_PASS_AREG0 */
> -
>  static tcg_target_ulong tci_read_reg(TCGReg index)
>  {
>      assert(index < ARRAY_SIZE(tci_reg));
> diff --git a/user-exec.c b/user-exec.c
> index b9ea9dd..ef9b172 100644
> --- a/user-exec.c
> +++ b/user-exec.c
> @@ -18,9 +18,6 @@
>   */
>  #include "config.h"
>  #include "cpu.h"
> -#ifndef CONFIG_TCG_PASS_AREG0
> -#include "dyngen-exec.h"
> -#endif
>  #include "disas.h"
>  #include "tcg.h"
>  
> @@ -60,12 +57,6 @@ void cpu_resume_from_signal(CPUArchState *env1, void *puc)
>      struct sigcontext *uc = puc;
>  #endif
>  
> -#ifndef CONFIG_TCG_PASS_AREG0
> -    env = env1;
> -
> -    /* XXX: restore cpu registers saved in host registers */
> -#endif
> -
>      if (puc) {
>          /* XXX: use siglongjmp ? */
>  #ifdef __linux__
> @@ -93,11 +84,6 @@ static inline int handle_cpu_signal(uintptr_t pc, unsigned long address,
>      TranslationBlock *tb;
>      int ret;
>  
> -#ifndef CONFIG_TCG_PASS_AREG0
> -    if (cpu_single_env) {
> -        env = cpu_single_env; /* XXX: find a correct solution for multithread */
> -    }
> -#endif
>  #if defined(DEBUG_SIGNAL)
>      qemu_printf("qemu: SIGSEGV pc=0x%08lx address=%08lx w=%d oldset=0x%08lx\n",
>                  pc, address, is_write, *(unsigned long *)old_set);
> -- 
> 1.7.2.5
> 
> 
>
Blue Swirl Sept. 8, 2012, 7:21 a.m. UTC | #2
On Thu, Sep 6, 2012 at 3:30 PM, Aurelien Jarno <aurelien@aurel32.net> wrote:
> On Sun, Sep 02, 2012 at 05:33:50PM +0000, Blue Swirl wrote:
>> Now that CONFIG_TCG_PASS_AREG0 is enabled for all targets,
>> remove dead code and support for !CONFIG_TCG_PASS_AREG0 case.
>>
>> Remove dyngen-exec.h and all references to it. Although included by
>> hw/spapr_hcall.c, it does not seem to use it.
>>
>> Remove unused HELPER_CFLAGS.
>>
>> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
>> ---
>>  Makefile.target            |    8 -----
>>  configure                  |   11 -------
>>  cpu-all.h                  |   11 -------
>>  cputlb.c                   |    4 --
>>  dyngen-exec.h              |   70 ------------------------------------------
>>  exec-all.h                 |    4 --
>>  hw/spapr_hcall.c           |    1 -
>>  softmmu_defs.h             |   21 -------------
>>  softmmu_header.h           |   63 ++++++++++++--------------------------
>>  softmmu_template.h         |   72 ++++++++++++++++---------------------------
>>  target-m68k/op_helper.c    |    3 --
>>  target-sparc/Makefile.objs |    2 -
>>  tcg/arm/tcg-target.c       |   31 ++-----------------
>>  tcg/arm/tcg-target.h       |    1 -
>>  tcg/hppa/tcg-target.c      |   24 --------------
>>  tcg/hppa/tcg-target.h      |    1 -
>>  tcg/i386/tcg-target.c      |   30 ------------------
>>  tcg/i386/tcg-target.h      |    1 -
>>  tcg/ia64/tcg-target.c      |   34 --------------------
>>  tcg/ia64/tcg-target.h      |    1 -
>>  tcg/mips/tcg-target.c      |   31 ++-----------------
>>  tcg/mips/tcg-target.h      |    1 -
>>  tcg/ppc/tcg-target.c       |   38 -----------------------
>>  tcg/ppc64/tcg-target.c     |   28 -----------------
>>  tcg/s390/tcg-target.c      |   24 --------------
>>  tcg/s390/tcg-target.h      |    1 -
>>  tcg/sparc/tcg-target.c     |   30 ------------------
>>  tcg/sparc/tcg-target.h     |    1 -
>>  tcg/tci/tcg-target.c       |    4 --
>>  tci.c                      |   12 -------
>>  user-exec.c                |   14 --------
>>  31 files changed, 53 insertions(+), 524 deletions(-)
>>  delete mode 100644 dyngen-exec.h
>>
>> diff --git a/Makefile.target b/Makefile.target
>> index 7892a8d..d9d54b8 100644
>> --- a/Makefile.target
>> +++ b/Makefile.target
>> @@ -80,14 +80,6 @@ obj-$(CONFIG_GDBSTUB_XML) += gdbstub-xml.o
>>
>>  tci-dis.o: QEMU_CFLAGS += -I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/tci
>>
>> -# HELPER_CFLAGS is used for all the legacy code compiled with static register
>> -# variables
>> -user-exec.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
>> -
>> -# Note: this is a workaround. The real fix is to avoid compiling
>> -# cpu_signal_handler() in user-exec.c.
>> -%/signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
>> -
>>  #########################################################
>>  # Linux user emulator target
>>
>> diff --git a/configure b/configure
>> index f60a4b6..e7d333b 100755
>> --- a/configure
>> +++ b/configure
>> @@ -118,7 +118,6 @@ audio_card_list="ac97 es1370 sb16 hda"
>>  audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
>>  block_drv_whitelist=""
>>  host_cc="gcc"
>> -helper_cflags=""
>>  libs_softmmu=""
>>  libs_tools=""
>>  audio_pt_int=""
>> @@ -894,7 +893,6 @@ case "$cpu" in
>>             QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
>>             if test "$solaris" = "no" ; then
>>               QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
>> -             helper_cflags="-ffixed-i0"
>>             fi
>>             ;;
>>      sparc64)
>> @@ -919,7 +917,6 @@ case "$cpu" in
>>             QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
>>             LDFLAGS="-m32 $LDFLAGS"
>>             cc_i386='$(CC) -m32'
>> -           helper_cflags="-fomit-frame-pointer"
>>             host_guest_base="yes"
>>             ;;
>>      x86_64)
>> @@ -3572,7 +3569,6 @@ if test "$sparse" = "yes" ; then
>>    echo "HOST_CC      := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
>>    echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
>>  fi
>> -echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
>>  echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
>>  echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
>>  echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
>> @@ -3827,13 +3823,6 @@ fi
>>
>>  symlink "$source_path/Makefile.target" "$target_dir/Makefile"
>>
>> -
>> -case "$target_arch2" in
>> -  alpha | arm* | cris | i386 | lm32 | m68k | microblaze* | mips* | or32 | s390x | sh4* | sparc* | unicore32 | x86_64 | xtensa* | ppc*)
>> -    echo "CONFIG_TCG_PASS_AREG0=y" >> $config_target_mak
>> -  ;;
>> -esac
>> -
>>  upper() {
>>      echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
>>  }
>> diff --git a/cpu-all.h b/cpu-all.h
>> index 5e07d28..74d3681 100644
>> --- a/cpu-all.h
>> +++ b/cpu-all.h
>> @@ -260,14 +260,6 @@ extern unsigned long reserved_va;
>>  #define stfl(p, v) stfl_raw(p, v)
>>  #define stfq(p, v) stfq_raw(p, v)
>>
>> -#ifndef CONFIG_TCG_PASS_AREG0
>> -#define ldub_code(p) ldub_raw(p)
>> -#define ldsb_code(p) ldsb_raw(p)
>> -#define lduw_code(p) lduw_raw(p)
>> -#define ldsw_code(p) ldsw_raw(p)
>> -#define ldl_code(p) ldl_raw(p)
>> -#define ldq_code(p) ldq_raw(p)
>> -#else
>>  #define cpu_ldub_code(env1, p) ldub_raw(p)
>>  #define cpu_ldsb_code(env1, p) ldsb_raw(p)
>>  #define cpu_lduw_code(env1, p) lduw_raw(p)
>> @@ -296,7 +288,6 @@ extern unsigned long reserved_va;
>>  #define cpu_stw_kernel(env, addr, data) stw_raw(addr, data)
>>  #define cpu_stl_kernel(env, addr, data) stl_raw(addr, data)
>>  #define cpu_stq_kernel(env, addr, data) stq_raw(addr, data)
>> -#endif
>>
>>  #define ldub_kernel(p) ldub_raw(p)
>>  #define ldsb_kernel(p) ldsb_raw(p)
>> @@ -313,7 +304,6 @@ extern unsigned long reserved_va;
>>  #define stfl_kernel(p, v) stfl_raw(p, v)
>>  #define stfq_kernel(p, vt) stfq_raw(p, v)
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  #define cpu_ldub_data(env, addr) ldub_raw(addr)
>>  #define cpu_lduw_data(env, addr) lduw_raw(addr)
>>  #define cpu_ldl_data(env, addr) ldl_raw(addr)
>> @@ -321,7 +311,6 @@ extern unsigned long reserved_va;
>>  #define cpu_stb_data(env, addr, data) stb_raw(addr, data)
>>  #define cpu_stw_data(env, addr, data) stw_raw(addr, data)
>>  #define cpu_stl_data(env, addr, data) stl_raw(addr, data)
>> -#endif
>>  #endif /* defined(CONFIG_USER_ONLY) */
>>
>>  /* page related stuff */
>> diff --git a/cputlb.c b/cputlb.c
>> index d3e7b25..8468517 100644
>> --- a/cputlb.c
>> +++ b/cputlb.c
>> @@ -325,11 +325,7 @@ tb_page_addr_t get_page_addr_code(CPUArchState *env1, target_ulong addr)
>>      mmu_idx = cpu_mmu_index(env1);
>>      if (unlikely(env1->tlb_table[mmu_idx][page_index].addr_code !=
>>                   (addr & TARGET_PAGE_MASK))) {
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>          cpu_ldub_code(env1, addr);
>> -#else
>> -        ldub_code(addr);
>> -#endif
>>      }
>>      pd = env1->iotlb[mmu_idx][page_index] & ~TARGET_PAGE_MASK;
>>      mr = iotlb_to_region(pd);
>> diff --git a/dyngen-exec.h b/dyngen-exec.h
>> deleted file mode 100644
>> index 083e20b..0000000
>> --- a/dyngen-exec.h
>> +++ /dev/null
>> @@ -1,70 +0,0 @@
>> -/*
>> - *  dyngen defines for micro operation code
>> - *
>> - *  Copyright (c) 2003 Fabrice Bellard
>> - *
>> - * This library is free software; you can redistribute it and/or
>> - * modify it under the terms of the GNU Lesser General Public
>> - * License as published by the Free Software Foundation; either
>> - * version 2 of the License, or (at your option) any later version.
>> - *
>> - * This library is distributed in the hope that it will be useful,
>> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>> - * Lesser General Public License for more details.
>> - *
>> - * You should have received a copy of the GNU Lesser General Public
>> - * License along with this library; if not, see <http://www.gnu.org/licenses/>.
>> - */
>> -#if !defined(__DYNGEN_EXEC_H__)
>> -#define __DYNGEN_EXEC_H__
>> -
>> -#if defined(CONFIG_TCG_INTERPRETER)
>> -/* The TCG interpreter does not need a special register AREG0,
>> - * but it is possible to use one by defining AREG0.
>> - * On i386, register edi seems to work. */
>> -/* Run without special register AREG0 or use a value defined elsewhere. */
>> -#elif defined(__i386__)
>> -#define AREG0 "ebp"
>> -#elif defined(__x86_64__)
>> -#define AREG0 "r14"
>> -#elif defined(_ARCH_PPC)
>> -#define AREG0 "r27"
>> -#elif defined(__arm__)
>> -#define AREG0 "r6"
>> -#elif defined(__hppa__)
>> -#define AREG0 "r17"
>> -#elif defined(__mips__)
>> -#define AREG0 "s0"
>> -#elif defined(__sparc__)
>> -#ifdef CONFIG_SOLARIS
>> -#define AREG0 "g2"
>> -#else
>> -#ifdef __sparc_v9__
>> -#define AREG0 "g5"
>> -#else
>> -#define AREG0 "g6"
>> -#endif
>> -#endif
>> -#elif defined(__s390__)
>> -#define AREG0 "r10"
>> -#elif defined(__alpha__)
>> -/* Note $15 is the frame pointer, so anything in op-i386.c that would
>> -   require a frame pointer, like alloca, would probably loose.  */
>> -#define AREG0 "$15"
>> -#elif defined(__mc68000)
>> -#define AREG0 "%a5"
>> -#elif defined(__ia64__)
>> -#define AREG0 "r7"
>> -#else
>> -#error unsupported CPU
>> -#endif
>> -
>> -#if defined(AREG0)
>> -register CPUArchState *env asm(AREG0);
>> -#else
>> -/* TODO: Try env = cpu_single_env. */
>> -extern CPUArchState *env;
>> -#endif
>> -
>> -#endif /* !defined(__DYNGEN_EXEC_H__) */
>> diff --git a/exec-all.h b/exec-all.h
>> index c5ec8e1..c5d3a13 100644
>> --- a/exec-all.h
>> +++ b/exec-all.h
>> @@ -323,9 +323,6 @@ void tlb_fill(CPUArchState *env1, target_ulong addr, int is_write, int mmu_idx,
>>
>>  #define ACCESS_TYPE (NB_MMU_MODES + 1)
>>  #define MEMSUFFIX _code
>> -#ifndef CONFIG_TCG_PASS_AREG0
>> -#define env cpu_single_env
>> -#endif
>>
>>  #define DATA_SIZE 1
>>  #include "softmmu_header.h"
>> @@ -341,7 +338,6 @@ void tlb_fill(CPUArchState *env1, target_ulong addr, int is_write, int mmu_idx,
>>
>>  #undef ACCESS_TYPE
>>  #undef MEMSUFFIX
>> -#undef env
>>
>>  #endif
>>
>> diff --git a/hw/spapr_hcall.c b/hw/spapr_hcall.c
>> index a5990a9..abd847f 100644
>> --- a/hw/spapr_hcall.c
>> +++ b/hw/spapr_hcall.c
>> @@ -1,6 +1,5 @@
>>  #include "sysemu.h"
>>  #include "cpu.h"
>> -#include "dyngen-exec.h"
>>  #include "qemu-char.h"
>>  #include "sysemu.h"
>>  #include "qemu-char.h"
>> diff --git a/softmmu_defs.h b/softmmu_defs.h
>> index 8d59f9d..1f25e33 100644
>> --- a/softmmu_defs.h
>> +++ b/softmmu_defs.h
>> @@ -9,25 +9,6 @@
>>  #ifndef SOFTMMU_DEFS_H
>>  #define SOFTMMU_DEFS_H
>>
>> -#ifndef CONFIG_TCG_PASS_AREG0
>> -uint8_t __ldb_mmu(target_ulong addr, int mmu_idx);
>> -void __stb_mmu(target_ulong addr, uint8_t val, int mmu_idx);
>> -uint16_t __ldw_mmu(target_ulong addr, int mmu_idx);
>> -void __stw_mmu(target_ulong addr, uint16_t val, int mmu_idx);
>> -uint32_t __ldl_mmu(target_ulong addr, int mmu_idx);
>> -void __stl_mmu(target_ulong addr, uint32_t val, int mmu_idx);
>> -uint64_t __ldq_mmu(target_ulong addr, int mmu_idx);
>> -void __stq_mmu(target_ulong addr, uint64_t val, int mmu_idx);
>> -
>> -uint8_t __ldb_cmmu(target_ulong addr, int mmu_idx);
>> -void __stb_cmmu(target_ulong addr, uint8_t val, int mmu_idx);
>> -uint16_t __ldw_cmmu(target_ulong addr, int mmu_idx);
>> -void __stw_cmmu(target_ulong addr, uint16_t val, int mmu_idx);
>> -uint32_t __ldl_cmmu(target_ulong addr, int mmu_idx);
>> -void __stl_cmmu(target_ulong addr, uint32_t val, int mmu_idx);
>> -uint64_t __ldq_cmmu(target_ulong addr, int mmu_idx);
>> -void __stq_cmmu(target_ulong addr, uint64_t val, int mmu_idx);
>> -#else
>>  uint8_t helper_ldb_mmu(CPUArchState *env, target_ulong addr, int mmu_idx);
>>  void helper_stb_mmu(CPUArchState *env, target_ulong addr, uint8_t val,
>>                      int mmu_idx);
>> @@ -54,5 +35,3 @@ uint64_t helper_ldq_cmmu(CPUArchState *env, target_ulong addr, int mmu_idx);
>>  void helper_stq_cmmu(CPUArchState *env, target_ulong addr, uint64_t val,
>>                       int mmu_idx);
>>  #endif
>> -
>> -#endif
>> diff --git a/softmmu_header.h b/softmmu_header.h
>> index cf1aa38..d8d9c81 100644
>> --- a/softmmu_header.h
>> +++ b/softmmu_header.h
>> @@ -78,23 +78,10 @@
>>  #define ADDR_READ addr_read
>>  #endif
>>
>> -#ifndef CONFIG_TCG_PASS_AREG0
>> -#define ENV_PARAM
>> -#define ENV_VAR
>> -#define CPU_PREFIX
>> -#define HELPER_PREFIX __
>> -#else
>> -#define ENV_PARAM CPUArchState *env,
>> -#define ENV_VAR env,
>> -#define CPU_PREFIX cpu_
>> -#define HELPER_PREFIX helper_
>> -#endif
>> -
>>  /* generic load/store macros */
>>
>>  static inline RES_TYPE
>> -glue(glue(glue(CPU_PREFIX, ld), USUFFIX), MEMSUFFIX)(ENV_PARAM
>> -                                                     target_ulong ptr)
>> +glue(glue(cpu_ld, USUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr)
>>  {
>>      int page_index;
>>      RES_TYPE res;
>> @@ -106,9 +93,7 @@ glue(glue(glue(CPU_PREFIX, ld), USUFFIX), MEMSUFFIX)(ENV_PARAM
>>      mmu_idx = CPU_MMU_INDEX;
>>      if (unlikely(env->tlb_table[mmu_idx][page_index].ADDR_READ !=
>>                   (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
>> -        res = glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_VAR
>> -                                                                     addr,
>> -                                                                     mmu_idx);
>> +        res = glue(glue(helper_ld, SUFFIX), MMUSUFFIX)(env, addr, mmu_idx);
>>      } else {
>>          uintptr_t hostaddr = addr + env->tlb_table[mmu_idx][page_index].addend;
>>          res = glue(glue(ld, USUFFIX), _raw)(hostaddr);
>> @@ -118,8 +103,7 @@ glue(glue(glue(CPU_PREFIX, ld), USUFFIX), MEMSUFFIX)(ENV_PARAM
>>
>>  #if DATA_SIZE <= 2
>>  static inline int
>> -glue(glue(glue(CPU_PREFIX, lds), SUFFIX), MEMSUFFIX)(ENV_PARAM
>> -                                                     target_ulong ptr)
>> +glue(glue(cpu_lds, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr)
>>  {
>>      int res, page_index;
>>      target_ulong addr;
>> @@ -130,8 +114,8 @@ glue(glue(glue(CPU_PREFIX, lds), SUFFIX), MEMSUFFIX)(ENV_PARAM
>>      mmu_idx = CPU_MMU_INDEX;
>>      if (unlikely(env->tlb_table[mmu_idx][page_index].ADDR_READ !=
>>                   (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
>> -        res = (DATA_STYPE)glue(glue(glue(HELPER_PREFIX, ld), SUFFIX),
>> -                               MMUSUFFIX)(ENV_VAR addr, mmu_idx);
>> +        res = (DATA_STYPE)glue(glue(helper_ld, SUFFIX),
>> +                               MMUSUFFIX)(env, addr, mmu_idx);
>>      } else {
>>          uintptr_t hostaddr = addr + env->tlb_table[mmu_idx][page_index].addend;
>>          res = glue(glue(lds, SUFFIX), _raw)(hostaddr);
>> @@ -145,8 +129,8 @@ glue(glue(glue(CPU_PREFIX, lds), SUFFIX), MEMSUFFIX)(ENV_PARAM
>>  /* generic store macro */
>>
>>  static inline void
>> -glue(glue(glue(CPU_PREFIX, st), SUFFIX), MEMSUFFIX)(ENV_PARAM target_ulong ptr,
>> -                                                    RES_TYPE v)
>> +glue(glue(cpu_st, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr,
>> +                                      RES_TYPE v)
>>  {
>>      int page_index;
>>      target_ulong addr;
>> @@ -157,8 +141,7 @@ glue(glue(glue(CPU_PREFIX, st), SUFFIX), MEMSUFFIX)(ENV_PARAM target_ulong ptr,
>>      mmu_idx = CPU_MMU_INDEX;
>>      if (unlikely(env->tlb_table[mmu_idx][page_index].addr_write !=
>>                   (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
>> -        glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_VAR addr, v,
>> -                                                               mmu_idx);
>> +        glue(glue(helper_st, SUFFIX), MMUSUFFIX)(env, addr, v, mmu_idx);
>>      } else {
>>          uintptr_t hostaddr = addr + env->tlb_table[mmu_idx][page_index].addend;
>>          glue(glue(st, SUFFIX), _raw)(hostaddr, v);
>> @@ -170,52 +153,50 @@ glue(glue(glue(CPU_PREFIX, st), SUFFIX), MEMSUFFIX)(ENV_PARAM target_ulong ptr,
>>  #if ACCESS_TYPE != (NB_MMU_MODES + 1)
>>
>>  #if DATA_SIZE == 8
>> -static inline float64 glue(glue(CPU_PREFIX, ldfq), MEMSUFFIX)(ENV_PARAM
>> -                                                              target_ulong ptr)
>> +static inline float64 glue(cpu_ldfq, MEMSUFFIX)(CPUArchState *env,
>> +                                                target_ulong ptr)
>>  {
>>      union {
>>          float64 d;
>>          uint64_t i;
>>      } u;
>> -    u.i = glue(glue(CPU_PREFIX, ldq), MEMSUFFIX)(ENV_VAR ptr);
>> +    u.i = glue(cpu_ldq, MEMSUFFIX)(env, ptr);
>>      return u.d;
>>  }
>>
>> -static inline void glue(glue(CPU_PREFIX, stfq), MEMSUFFIX)(ENV_PARAM
>> -                                                           target_ulong ptr,
>> -                                                           float64 v)
>> +static inline void glue(cpu_stfq, MEMSUFFIX)(CPUArchState *env,
>> +                                             target_ulong ptr, float64 v)
>>  {
>>      union {
>>          float64 d;
>>          uint64_t i;
>>      } u;
>>      u.d = v;
>> -    glue(glue(CPU_PREFIX, stq), MEMSUFFIX)(ENV_VAR ptr, u.i);
>> +    glue(cpu_stq, MEMSUFFIX)(env, ptr, u.i);
>>  }
>>  #endif /* DATA_SIZE == 8 */
>>
>>  #if DATA_SIZE == 4
>> -static inline float32 glue(glue(CPU_PREFIX, ldfl), MEMSUFFIX)(ENV_PARAM
>> -                                                              target_ulong ptr)
>> +static inline float32 glue(cpu_ldfl, MEMSUFFIX)(CPUArchState *env,
>> +                                                target_ulong ptr)
>>  {
>>      union {
>>          float32 f;
>>          uint32_t i;
>>      } u;
>> -    u.i = glue(glue(CPU_PREFIX, ldl), MEMSUFFIX)(ENV_VAR ptr);
>> +    u.i = glue(cpu_ldl, MEMSUFFIX)(env, ptr);
>>      return u.f;
>>  }
>>
>> -static inline void glue(glue(CPU_PREFIX, stfl), MEMSUFFIX)(ENV_PARAM
>> -                                                           target_ulong ptr,
>> -                                                           float32 v)
>> +static inline void glue(cpu_stfl, MEMSUFFIX)(CPUArchState *env,
>> +                                             target_ulong ptr, float32 v)
>>  {
>>      union {
>>          float32 f;
>>          uint32_t i;
>>      } u;
>>      u.f = v;
>> -    glue(glue(CPU_PREFIX, stl), MEMSUFFIX)(ENV_VAR ptr, u.i);
>> +    glue(cpu_stl, MEMSUFFIX)(env, ptr, u.i);
>>  }
>>  #endif /* DATA_SIZE == 4 */
>>
>> @@ -230,7 +211,3 @@ static inline void glue(glue(CPU_PREFIX, stfl), MEMSUFFIX)(ENV_PARAM
>>  #undef CPU_MMU_INDEX
>>  #undef MMUSUFFIX
>>  #undef ADDR_READ
>> -#undef ENV_PARAM
>> -#undef ENV_VAR
>> -#undef CPU_PREFIX
>> -#undef HELPER_PREFIX
>> diff --git a/softmmu_template.h b/softmmu_template.h
>> index b8bd700..e2490f0 100644
>> --- a/softmmu_template.h
>> +++ b/softmmu_template.h
>> @@ -54,23 +54,11 @@
>>  #define ADDR_READ addr_read
>>  #endif
>>
>> -#ifndef CONFIG_TCG_PASS_AREG0
>> -#define ENV_PARAM
>> -#define ENV_VAR
>> -#define CPU_PREFIX
>> -#define HELPER_PREFIX __
>> -#else
>> -#define ENV_PARAM CPUArchState *env,
>> -#define ENV_VAR env,
>> -#define CPU_PREFIX cpu_
>> -#define HELPER_PREFIX helper_
>> -#endif
>> -
>> -static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
>> +static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(CPUArchState *env,
>>                                                          target_ulong addr,
>>                                                          int mmu_idx,
>>                                                          uintptr_t retaddr);
>> -static inline DATA_TYPE glue(io_read, SUFFIX)(ENV_PARAM
>> +static inline DATA_TYPE glue(io_read, SUFFIX)(CPUArchState *env,
>>                                                target_phys_addr_t physaddr,
>>                                                target_ulong addr,
>>                                                uintptr_t retaddr)
>> @@ -104,9 +92,8 @@ static inline DATA_TYPE glue(io_read, SUFFIX)(ENV_PARAM
>>
>>  /* handle all cases except unaligned access which span two pages */
>>  DATA_TYPE
>> -glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
>> -                                                       target_ulong addr,
>> -                                                       int mmu_idx)
>> +glue(glue(helper_ld, SUFFIX), MMUSUFFIX)(CPUArchState *env, target_ulong addr,
>> +                                         int mmu_idx)
>>  {
>>      DATA_TYPE res;
>>      int index;
>> @@ -126,15 +113,15 @@ glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
>>                  goto do_unaligned_access;
>>              retaddr = GETPC();
>>              ioaddr = env->iotlb[mmu_idx][index];
>> -            res = glue(io_read, SUFFIX)(ENV_VAR ioaddr, addr, retaddr);
>> +            res = glue(io_read, SUFFIX)(env, ioaddr, addr, retaddr);
>>          } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
>>              /* slow unaligned access (it spans two pages or IO) */
>>          do_unaligned_access:
>>              retaddr = GETPC();
>>  #ifdef ALIGNED_ONLY
>> -            do_unaligned_access(ENV_VAR addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
>> +            do_unaligned_access(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
>>  #endif
>> -            res = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_VAR addr,
>> +            res = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(env, addr,
>>                                                           mmu_idx, retaddr);
>>          } else {
>>              /* unaligned/aligned access in the same page */
>> @@ -142,7 +129,7 @@ glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
>>  #ifdef ALIGNED_ONLY
>>              if ((addr & (DATA_SIZE - 1)) != 0) {
>>                  retaddr = GETPC();
>> -                do_unaligned_access(ENV_VAR addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
>> +                do_unaligned_access(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
>>              }
>>  #endif
>>              addend = env->tlb_table[mmu_idx][index].addend;
>> @@ -154,7 +141,7 @@ glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
>>          retaddr = GETPC();
>>  #ifdef ALIGNED_ONLY
>>          if ((addr & (DATA_SIZE - 1)) != 0)
>> -            do_unaligned_access(ENV_VAR addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
>> +            do_unaligned_access(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
>>  #endif
>>          tlb_fill(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
>>          goto redo;
>> @@ -164,7 +151,7 @@ glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
>>
>>  /* handle all unaligned cases */
>>  static DATA_TYPE
>> -glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
>> +glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(CPUArchState *env,
>>                                         target_ulong addr,
>>                                         int mmu_idx,
>>                                         uintptr_t retaddr)
>> @@ -183,15 +170,15 @@ glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
>>              if ((addr & (DATA_SIZE - 1)) != 0)
>>                  goto do_unaligned_access;
>>              ioaddr = env->iotlb[mmu_idx][index];
>> -            res = glue(io_read, SUFFIX)(ENV_VAR ioaddr, addr, retaddr);
>> +            res = glue(io_read, SUFFIX)(env, ioaddr, addr, retaddr);
>>          } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
>>          do_unaligned_access:
>>              /* slow unaligned access (it spans two pages) */
>>              addr1 = addr & ~(DATA_SIZE - 1);
>>              addr2 = addr1 + DATA_SIZE;
>> -            res1 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_VAR addr1,
>> +            res1 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(env, addr1,
>>                                                            mmu_idx, retaddr);
>> -            res2 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_VAR addr2,
>> +            res2 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(env, addr2,
>>                                                            mmu_idx, retaddr);
>>              shift = (addr & (DATA_SIZE - 1)) * 8;
>>  #ifdef TARGET_WORDS_BIGENDIAN
>> @@ -216,13 +203,13 @@ glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
>>
>>  #ifndef SOFTMMU_CODE_ACCESS
>>
>> -static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
>> +static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(CPUArchState *env,
>>                                                     target_ulong addr,
>>                                                     DATA_TYPE val,
>>                                                     int mmu_idx,
>>                                                     uintptr_t retaddr);
>>
>> -static inline void glue(io_write, SUFFIX)(ENV_PARAM
>> +static inline void glue(io_write, SUFFIX)(CPUArchState *env,
>>                                            target_phys_addr_t physaddr,
>>                                            DATA_TYPE val,
>>                                            target_ulong addr,
>> @@ -253,10 +240,9 @@ static inline void glue(io_write, SUFFIX)(ENV_PARAM
>>  #endif /* SHIFT > 2 */
>>  }
>>
>> -void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
>> -                                                            target_ulong addr,
>> -                                                            DATA_TYPE val,
>> -                                                            int mmu_idx)
>> +void glue(glue(helper_st, SUFFIX), MMUSUFFIX)(CPUArchState *env,
>> +                                              target_ulong addr, DATA_TYPE val,
>> +                                              int mmu_idx)
>>  {
>>      target_phys_addr_t ioaddr;
>>      target_ulong tlb_addr;
>> @@ -273,14 +259,14 @@ void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
>>                  goto do_unaligned_access;
>>              retaddr = GETPC();
>>              ioaddr = env->iotlb[mmu_idx][index];
>> -            glue(io_write, SUFFIX)(ENV_VAR ioaddr, val, addr, retaddr);
>> +            glue(io_write, SUFFIX)(env, ioaddr, val, addr, retaddr);
>>          } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
>>          do_unaligned_access:
>>              retaddr = GETPC();
>>  #ifdef ALIGNED_ONLY
>> -            do_unaligned_access(ENV_VAR addr, 1, mmu_idx, retaddr);
>> +            do_unaligned_access(env, addr, 1, mmu_idx, retaddr);
>>  #endif
>> -            glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_VAR addr, val,
>> +            glue(glue(slow_st, SUFFIX), MMUSUFFIX)(env, addr, val,
>>                                                     mmu_idx, retaddr);
>>          } else {
>>              /* aligned/unaligned access in the same page */
>> @@ -288,7 +274,7 @@ void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
>>  #ifdef ALIGNED_ONLY
>>              if ((addr & (DATA_SIZE - 1)) != 0) {
>>                  retaddr = GETPC();
>> -                do_unaligned_access(ENV_VAR addr, 1, mmu_idx, retaddr);
>> +                do_unaligned_access(env, addr, 1, mmu_idx, retaddr);
>>              }
>>  #endif
>>              addend = env->tlb_table[mmu_idx][index].addend;
>> @@ -300,7 +286,7 @@ void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
>>          retaddr = GETPC();
>>  #ifdef ALIGNED_ONLY
>>          if ((addr & (DATA_SIZE - 1)) != 0)
>> -            do_unaligned_access(ENV_VAR addr, 1, mmu_idx, retaddr);
>> +            do_unaligned_access(env, addr, 1, mmu_idx, retaddr);
>>  #endif
>>          tlb_fill(env, addr, 1, mmu_idx, retaddr);
>>          goto redo;
>> @@ -308,7 +294,7 @@ void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
>>  }
>>
>>  /* handles all unaligned cases */
>> -static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
>> +static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(CPUArchState *env,
>>                                                     target_ulong addr,
>>                                                     DATA_TYPE val,
>>                                                     int mmu_idx,
>> @@ -327,7 +313,7 @@ static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
>>              if ((addr & (DATA_SIZE - 1)) != 0)
>>                  goto do_unaligned_access;
>>              ioaddr = env->iotlb[mmu_idx][index];
>> -            glue(io_write, SUFFIX)(ENV_VAR ioaddr, val, addr, retaddr);
>> +            glue(io_write, SUFFIX)(env, ioaddr, val, addr, retaddr);
>>          } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
>>          do_unaligned_access:
>>              /* XXX: not efficient, but simple */
>> @@ -335,11 +321,11 @@ static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
>>               * previous page from the TLB cache.  */
>>              for(i = DATA_SIZE - 1; i >= 0; i--) {
>>  #ifdef TARGET_WORDS_BIGENDIAN
>> -                glue(slow_stb, MMUSUFFIX)(ENV_VAR addr + i,
>> +                glue(slow_stb, MMUSUFFIX)(env, addr + i,
>>                                            val >> (((DATA_SIZE - 1) * 8) - (i * 8)),
>>                                            mmu_idx, retaddr);
>>  #else
>> -                glue(slow_stb, MMUSUFFIX)(ENV_VAR addr + i,
>> +                glue(slow_stb, MMUSUFFIX)(env, addr + i,
>>                                            val >> (i * 8),
>>                                            mmu_idx, retaddr);
>>  #endif
>> @@ -366,7 +352,3 @@ static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
>>  #undef USUFFIX
>>  #undef DATA_SIZE
>>  #undef ADDR_READ
>> -#undef ENV_PARAM
>> -#undef ENV_VAR
>> -#undef CPU_PREFIX
>> -#undef HELPER_PREFIX
>> diff --git a/target-m68k/op_helper.c b/target-m68k/op_helper.c
>> index 3116287..aa00504 100644
>> --- a/target-m68k/op_helper.c
>> +++ b/target-m68k/op_helper.c
>> @@ -192,9 +192,6 @@ void HELPER(divu)(CPUM68KState *env, uint32_t word)
>>      quot = num / den;
>>      rem = num % den;
>>      flags = 0;
>> -    /* Avoid using a PARAM1 of zero.  This breaks dyngen because it uses
>> -       the address of a symbol, and gcc knows symbols can't have address
>> -       zero.  */
>>      if (word && quot > 0xffff)
>>          flags |= CCF_V;
>>      if (quot == 0)
>
> I am not sure this hunk really belong to this patch, it should more
> likely be moved to the "target-m68k: switch to AREG0 free mode" patch.

It should have belonged to the commit that removed dyngen system,
PARAM1 hasn't meant anything for ages. It could be extracted to a
separate cleanup patch but I think it still fits the overall cleanup
that removes last remaining pieces of dyngen.

>
>
>> diff --git a/target-sparc/Makefile.objs b/target-sparc/Makefile.objs
>> index a93e07d..9fc42ea 100644
>> --- a/target-sparc/Makefile.objs
>> +++ b/target-sparc/Makefile.objs
>> @@ -4,5 +4,3 @@ obj-y += fop_helper.o cc_helper.o win_helper.o mmu_helper.o ldst_helper.o
>>  obj-$(TARGET_SPARC) += int32_helper.o
>>  obj-$(TARGET_SPARC64) += int64_helper.o
>>  obj-$(TARGET_SPARC64) += vis_helper.o
>> -
>> -$(obj)/op_helper.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
>> diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c
>> index cf0ca3d..aed3b53 100644
>> --- a/tcg/arm/tcg-target.c
>> +++ b/tcg/arm/tcg-target.c
>> @@ -176,7 +176,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>             so don't use these. */
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1);
>> -#if defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
>> +#if TARGET_LONG_BITS == 64
>>          /* If we're passing env to the helper as r0 and need a regpair
>>           * for the address then r2 will be overwritten as we're setting
>>           * up the args to the helper.
>> @@ -204,8 +204,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>             use these. */
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1);
>> -#if defined(CONFIG_SOFTMMU) && \
>> -    defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
>> +#if defined(CONFIG_SOFTMMU) && (TARGET_LONG_BITS == 64)
>>          /* Avoid clashes with registers being used for helper args */
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R2);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
>> @@ -223,7 +222,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>  #ifdef CONFIG_SOFTMMU
>>          /* r2 is still needed to load data_reg, so don't use it. */
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R2);
>> -#if defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
>> +#if TARGET_LONG_BITS == 64
>>          /* Avoid clashes with registers being used for helper args */
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
>>  #endif
>> @@ -954,7 +953,6 @@ static inline void tcg_out_goto_label(TCGContext *s, int cond, int label_index)
>>
>>  #include "../../softmmu_defs.h"
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>>     int mmu_idx) */
>>  static const void * const qemu_ld_helpers[4] = {
>> @@ -972,25 +970,6 @@ static const void * const qemu_st_helpers[4] = {
>>      helper_stl_mmu,
>>      helper_stq_mmu,
>>  };
>> -#else
>> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
>> -   mmu_idx) */
>> -static void *qemu_ld_helpers[4] = {
>> -    __ldb_mmu,
>> -    __ldw_mmu,
>> -    __ldl_mmu,
>> -    __ldq_mmu,
>> -};
>> -
>> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
>> -   int mmu_idx) */
>> -static void *qemu_st_helpers[4] = {
>> -    __stb_mmu,
>> -    __stw_mmu,
>> -    __stl_mmu,
>> -    __stq_mmu,
>> -};
>> -#endif
>>
>>  /* Helper routines for marshalling helper function arguments into
>>   * the correct registers and stack.
>> @@ -1203,9 +1182,7 @@ static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>>       * trash by moving the earlier arguments into them.
>>       */
>>      argreg = TCG_REG_R0;
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      argreg = tcg_out_arg_reg32(s, argreg, TCG_AREG0);
>> -#endif
>>  #if TARGET_LONG_BITS == 64
>>      argreg = tcg_out_arg_reg64(s, argreg, addr_reg, addr_reg2);
>>  #else
>> @@ -1421,9 +1398,7 @@ static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>>       * trash by moving the earlier arguments into them.
>>       */
>>      argreg = TCG_REG_R0;
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      argreg = tcg_out_arg_reg32(s, argreg, TCG_AREG0);
>> -#endif
>>  #if TARGET_LONG_BITS == 64
>>      argreg = tcg_out_arg_reg64(s, argreg, addr_reg, addr_reg2);
>>  #else
>> diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h
>> index f90b834..c0b8f72 100644
>> --- a/tcg/arm/tcg-target.h
>> +++ b/tcg/arm/tcg-target.h
>> @@ -77,7 +77,6 @@ typedef enum {
>>  #define TCG_TARGET_HAS_GUEST_BASE
>>
>>  enum {
>> -    /* Note: must be synced with dyngen-exec.h */
>>      TCG_AREG0 = TCG_REG_R6,
>>  };
>>
>> diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
>> index 2885212..8b81b70 100644
>> --- a/tcg/hppa/tcg-target.c
>> +++ b/tcg/hppa/tcg-target.c
>> @@ -882,7 +882,6 @@ static void tcg_out_setcond2(TCGContext *s, int cond, TCGArg ret,
>>  #if defined(CONFIG_SOFTMMU)
>>  #include "../../softmmu_defs.h"
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>>     int mmu_idx) */
>>  static const void * const qemu_ld_helpers[4] = {
>> @@ -900,25 +899,6 @@ static const void * const qemu_st_helpers[4] = {
>>      helper_stl_mmu,
>>      helper_stq_mmu,
>>  };
>> -#else
>> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
>> -   mmu_idx) */
>> -static void *qemu_ld_helpers[4] = {
>> -    __ldb_mmu,
>> -    __ldw_mmu,
>> -    __ldl_mmu,
>> -    __ldq_mmu,
>> -};
>> -
>> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
>> -   int mmu_idx) */
>> -static void *qemu_st_helpers[4] = {
>> -    __stb_mmu,
>> -    __stw_mmu,
>> -    __stl_mmu,
>> -    __stq_mmu,
>> -};
>> -#endif
>>
>>  /* Load and compare a TLB entry, and branch if TLB miss.  OFFSET is set to
>>     the offset of the first ADDR_READ or ADDR_WRITE member of the appropriate
>> @@ -1085,7 +1065,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>>      }
>>      tcg_out_movi(s, TCG_TYPE_I32, argreg, mem_index);
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      /* XXX/FIXME: suboptimal */
>>      tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[2],
>>                  tcg_target_call_iarg_regs[1]);
>> @@ -1093,7 +1072,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>>                  tcg_target_call_iarg_regs[0]);
>>      tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>>                  TCG_AREG0);
>> -#endif
>>      tcg_out_call(s, qemu_ld_helpers[opc & 3]);
>>
>>      switch (opc) {
>> @@ -1245,7 +1223,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>>          tcg_abort();
>>      }
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      /* XXX/FIXME: suboptimal */
>>      tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
>>                  tcg_target_call_iarg_regs[2]);
>> @@ -1255,7 +1232,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>>                  tcg_target_call_iarg_regs[0]);
>>      tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>>                  TCG_AREG0);
>> -#endif
>>      tcg_out_call(s, qemu_st_helpers[opc]);
>>
>>      /* label2: */
>> diff --git a/tcg/hppa/tcg-target.h b/tcg/hppa/tcg-target.h
>> index d4bf6fe..01ef960 100644
>> --- a/tcg/hppa/tcg-target.h
>> +++ b/tcg/hppa/tcg-target.h
>> @@ -104,7 +104,6 @@ typedef enum {
>>
>>  #define TCG_TARGET_HAS_GUEST_BASE
>>
>> -/* Note: must be synced with dyngen-exec.h */
>>  #define TCG_AREG0 TCG_REG_R17
>>
>>
>> diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
>> index da17bba..34c2df8 100644
>> --- a/tcg/i386/tcg-target.c
>> +++ b/tcg/i386/tcg-target.c
>> @@ -183,9 +183,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>              tcg_regset_set32(ct->u.regs, 0, 0xffff);
>>              tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[0]);
>>              tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[1]);
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>              tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[2]);
>> -#endif
>>          } else {
>>              tcg_regset_set32(ct->u.regs, 0, 0xff);
>>              tcg_regset_reset_reg(ct->u.regs, TCG_REG_EAX);
>> @@ -965,7 +963,6 @@ static void tcg_out_jmp(TCGContext *s, tcg_target_long dest)
>>
>>  #include "../../softmmu_defs.h"
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>>     int mmu_idx) */
>>  static const void *qemu_ld_helpers[4] = {
>> @@ -983,25 +980,6 @@ static const void *qemu_st_helpers[4] = {
>>      helper_stl_mmu,
>>      helper_stq_mmu,
>>  };
>> -#else
>> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
>> -   mmu_idx) */
>> -static void *qemu_ld_helpers[4] = {
>> -    __ldb_mmu,
>> -    __ldw_mmu,
>> -    __ldl_mmu,
>> -    __ldq_mmu,
>> -};
>> -
>> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
>> -   int mmu_idx) */
>> -static void *qemu_st_helpers[4] = {
>> -    __stb_mmu,
>> -    __stw_mmu,
>> -    __stl_mmu,
>> -    __stq_mmu,
>> -};
>> -#endif
>>
>>  /* Perform the TLB load and compare.
>>
>> @@ -1220,16 +1198,13 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>>      }
>>      tcg_out_push(s, args[addrlo_idx]);
>>      stack_adjust += 4;
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      tcg_out_push(s, TCG_AREG0);
>>      stack_adjust += 4;
>> -#endif
>>  #else
>>      /* The first argument is already loaded with addrlo.  */
>>      arg_idx = 1;
>>      tcg_out_movi(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[arg_idx],
>>                   mem_index);
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      /* XXX/FIXME: suboptimal */
>>      tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[3],
>>                  tcg_target_call_iarg_regs[2]);
>> @@ -1240,7 +1215,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>>      tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[0],
>>                  TCG_AREG0);
>>  #endif
>> -#endif
>>
>>      tcg_out_calli(s, (tcg_target_long)qemu_ld_helpers[s_bits]);
>>
>> @@ -1436,16 +1410,13 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
>>      }
>>      tcg_out_push(s, args[addrlo_idx]);
>>      stack_adjust += 4;
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      tcg_out_push(s, TCG_AREG0);
>>      stack_adjust += 4;
>> -#endif
>>  #else
>>      tcg_out_mov(s, (opc == 3 ? TCG_TYPE_I64 : TCG_TYPE_I32),
>>                  tcg_target_call_iarg_regs[1], data_reg);
>>      tcg_out_movi(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[2], mem_index);
>>      stack_adjust = 0;
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      /* XXX/FIXME: suboptimal */
>>      tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[3],
>>                  tcg_target_call_iarg_regs[2]);
>> @@ -1456,7 +1427,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
>>      tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[0],
>>                  TCG_AREG0);
>>  #endif
>> -#endif
>>
>>      tcg_out_calli(s, (tcg_target_long)qemu_st_helpers[s_bits]);
>>
>> diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
>> index c3cfe05..8be42f3 100644
>> --- a/tcg/i386/tcg-target.h
>> +++ b/tcg/i386/tcg-target.h
>> @@ -116,7 +116,6 @@ typedef enum {
>>
>>  #define TCG_TARGET_HAS_GUEST_BASE
>>
>> -/* Note: must be synced with dyngen-exec.h */
>>  #if TCG_TARGET_REG_BITS == 64
>>  # define TCG_AREG0 TCG_REG_R14
>>  #else
>> diff --git a/tcg/ia64/tcg-target.c b/tcg/ia64/tcg-target.c
>> index dc588db..1745038 100644
>> --- a/tcg/ia64/tcg-target.c
>> +++ b/tcg/ia64/tcg-target.c
>> @@ -1452,7 +1452,6 @@ static inline void tcg_out_qemu_tlb(TCGContext *s, TCGArg addr_reg,
>>                                 TCG_REG_P7, TCG_REG_R3, TCG_REG_R57));
>>  }
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>>     int mmu_idx) */
>>  static const void * const qemu_ld_helpers[4] = {
>> @@ -1461,16 +1460,6 @@ static const void * const qemu_ld_helpers[4] = {
>>      helper_ldl_mmu,
>>      helper_ldq_mmu,
>>  };
>> -#else
>> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
>> -   mmu_idx) */
>> -static void *qemu_ld_helpers[4] = {
>> -    __ldb_mmu,
>> -    __ldw_mmu,
>> -    __ldl_mmu,
>> -    __ldq_mmu,
>> -};
>> -#endif
>>
>>  static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>>  {
>> @@ -1530,7 +1519,6 @@ static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>>                         tcg_opc_m1 (TCG_REG_P7, OPC_LD8_M1, TCG_REG_R1, TCG_REG_R2),
>>                         tcg_opc_i18(TCG_REG_P0, OPC_NOP_I18, 0));
>>      }
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      /* XXX/FIXME: suboptimal */
>>      tcg_out_bundle(s, mII,
>>                     tcg_opc_a5 (TCG_REG_P7, OPC_ADDL_A5, TCG_REG_R58,
>> @@ -1539,7 +1527,6 @@ static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>>                                 TCG_REG_R57, 0, TCG_REG_R56),
>>                     tcg_opc_a4 (TCG_REG_P7, OPC_ADDS_A4,
>>                                 TCG_REG_R56, 0, TCG_AREG0));
>> -#endif
>>      if (!bswap || s_bits == 0) {
>>          tcg_out_bundle(s, miB,
>>                         tcg_opc_m48(TCG_REG_P0, OPC_NOP_M48, 0),
>> @@ -1570,7 +1557,6 @@ static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
>>      }
>>  }
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  /* helper signature: helper_st_mmu(CPUState *env, target_ulong addr,
>>     uintxx_t val, int mmu_idx) */
>>  static const void * const qemu_st_helpers[4] = {
>> @@ -1579,16 +1565,6 @@ static const void * const qemu_st_helpers[4] = {
>>      helper_stl_mmu,
>>      helper_stq_mmu,
>>  };
>> -#else
>> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
>> -   int mmu_idx) */
>> -static void *qemu_st_helpers[4] = {
>> -    __stb_mmu,
>> -    __stw_mmu,
>> -    __stl_mmu,
>> -    __stq_mmu,
>> -};
>> -#endif
>>
>>  static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>>  {
>> @@ -1658,7 +1634,6 @@ static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>>          data_reg = TCG_REG_R2;
>>      }
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      /* XXX/FIXME: suboptimal */
>>      tcg_out_bundle(s, mII,
>>                     tcg_opc_a5 (TCG_REG_P7, OPC_ADDL_A5, TCG_REG_R59,
>> @@ -1674,15 +1649,6 @@ static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
>>                                 TCG_REG_R56, 0, TCG_AREG0),
>>                     tcg_opc_b5 (TCG_REG_P7, OPC_BR_CALL_SPTK_MANY_B5,
>>                                 TCG_REG_B0, TCG_REG_B6));
>> -#else
>> -    tcg_out_bundle(s, miB,
>> -                   tcg_opc_m4 (TCG_REG_P6, opc_st_m4[opc],
>> -                               data_reg, TCG_REG_R3),
>> -                   tcg_opc_a5 (TCG_REG_P7, OPC_ADDL_A5, TCG_REG_R58,
>> -                               mem_index, TCG_REG_R0),
>> -                   tcg_opc_b5 (TCG_REG_P7, OPC_BR_CALL_SPTK_MANY_B5,
>> -                               TCG_REG_B0, TCG_REG_B6));
>> -#endif
>>  }
>>
>>  #else /* !CONFIG_SOFTMMU */
>> diff --git a/tcg/ia64/tcg-target.h b/tcg/ia64/tcg-target.h
>> index 0631b9f..c22962a 100644
>> --- a/tcg/ia64/tcg-target.h
>> +++ b/tcg/ia64/tcg-target.h
>> @@ -140,7 +140,6 @@ typedef enum {
>>  #define TCG_TARGET_HAS_not_i32          0 /* xor r1, -1, r3 */
>>  #define TCG_TARGET_HAS_not_i64          0 /* xor r1, -1, r3 */
>>
>> -/* Note: must be synced with dyngen-exec.h */
>>  #define TCG_AREG0 TCG_REG_R7
>>
>>  /* Guest base is supported */
>> diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c
>> index 1006e28..74db83d 100644
>> --- a/tcg/mips/tcg-target.c
>> +++ b/tcg/mips/tcg-target.c
>> @@ -217,7 +217,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>          tcg_regset_set(ct->u.regs, 0xffffffff);
>>  #if defined(CONFIG_SOFTMMU)
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0);
>> -# if defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
>> +# if (TARGET_LONG_BITS == 64)
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A2);
>>  # endif
>>  #endif
>> @@ -227,12 +227,11 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>          tcg_regset_set(ct->u.regs, 0xffffffff);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0);
>>  #if defined(CONFIG_SOFTMMU)
>> -# if (defined(CONFIG_TCG_PASS_AREG0) && TARGET_LONG_BITS == 32) || \
>> -     (!defined(CONFIG_TCG_PASS_AREG0) && TARGET_LONG_BITS == 64)
>> +# if (TARGET_LONG_BITS == 32)
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A1);
>>  # endif
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A2);
>> -# if defined(CONFIG_TCG_PASS_AREG0) && TARGET_LONG_BITS == 64
>> +# if TARGET_LONG_BITS == 64
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_A3);
>>  # endif
>>  #endif
>> @@ -821,7 +820,6 @@ static void tcg_out_setcond2(TCGContext *s, TCGCond cond, int ret,
>>
>>  #include "../../softmmu_defs.h"
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>>     int mmu_idx) */
>>  static const void * const qemu_ld_helpers[4] = {
>> @@ -839,25 +837,6 @@ static const void * const qemu_st_helpers[4] = {
>>      helper_stl_mmu,
>>      helper_stq_mmu,
>>  };
>> -#else
>> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
>> -   mmu_idx) */
>> -static void *qemu_ld_helpers[4] = {
>> -    __ldb_mmu,
>> -    __ldw_mmu,
>> -    __ldl_mmu,
>> -    __ldq_mmu,
>> -};
>> -
>> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
>> -   int mmu_idx) */
>> -static void *qemu_st_helpers[4] = {
>> -    __stb_mmu,
>> -    __stw_mmu,
>> -    __stl_mmu,
>> -    __stq_mmu,
>> -};
>> -#endif
>>  #endif
>>
>>  static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>> @@ -942,9 +921,7 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>>
>>      /* slow path */
>>      arg_num = 0;
>> -# ifdef CONFIG_TCG_PASS_AREG0
>>      tcg_out_call_iarg_reg32(s, &arg_num, TCG_AREG0);
>> -# endif
>>  # if TARGET_LONG_BITS == 64
>>      tcg_out_call_iarg_reg64(s, &arg_num, addr_regl, addr_regh);
>>  # else
>> @@ -1127,9 +1104,7 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
>>
>>      /* slow path */
>>      arg_num = 0;
>> -# ifdef CONFIG_TCG_PASS_AREG0
>>      tcg_out_call_iarg_reg32(s, &arg_num, TCG_AREG0);
>> -# endif
>>  # if TARGET_LONG_BITS == 64
>>      tcg_out_call_iarg_reg64(s, &arg_num, addr_regl, addr_regh);
>>  # else
>> diff --git a/tcg/mips/tcg-target.h b/tcg/mips/tcg-target.h
>> index d3c804d..1c61931 100644
>> --- a/tcg/mips/tcg-target.h
>> +++ b/tcg/mips/tcg-target.h
>> @@ -96,7 +96,6 @@ typedef enum {
>>  #define TCG_TARGET_HAS_ext8u_i32        0 /* andi rt, rs, 0xff   */
>>  #define TCG_TARGET_HAS_ext16u_i32       0 /* andi rt, rs, 0xffff */
>>
>> -/* Note: must be synced with dyngen-exec.h */
>>  #define TCG_AREG0 TCG_REG_S0
>>
>>  /* guest base is supported */
>> diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
>> index 0cff181..26c4b33 100644
>> --- a/tcg/ppc/tcg-target.c
>> +++ b/tcg/ppc/tcg-target.c
>> @@ -248,7 +248,6 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>          tcg_regset_set32(ct->u.regs, 0, 0xffffffff);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4);
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
>>  #if TARGET_LONG_BITS == 64
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
>> @@ -256,11 +255,6 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R7);
>>  #endif
>>  #endif
>> -#else /* !AREG0 */
>> -#if TARGET_LONG_BITS == 64
>> -        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
>> -#endif
>> -#endif
>>          break;
>>      case 'K':                   /* qemu_st[8..32] constraint */
>>          ct->ct |= TCG_CT_REG;
>> @@ -268,7 +262,6 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
>>  #if TARGET_LONG_BITS == 64
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R7);
>> @@ -276,11 +269,6 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R8);
>>  #endif
>>  #endif
>> -#else /* !AREG0 */
>> -#if TARGET_LONG_BITS == 64
>> -        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
>> -#endif
>> -#endif
>>          break;
>>      case 'M':                   /* qemu_st64 constraint */
>>          ct->ct |= TCG_CT_REG;
>> @@ -290,12 +278,10 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R7);
>> -#if defined(CONFIG_TCG_PASS_AREG0)
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R8);
>>  #ifdef TCG_TARGET_CALL_ALIGN_ARGS
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_R9);
>>  #endif
>> -#endif
>>          break;
>>  #else
>>      case 'L':
>> @@ -541,7 +527,6 @@ static void tcg_out_call (TCGContext *s, tcg_target_long arg, int const_arg)
>>
>>  #include "../../softmmu_defs.h"
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>>     int mmu_idx) */
>>  static const void * const qemu_ld_helpers[4] = {
>> @@ -559,25 +544,6 @@ static const void * const qemu_st_helpers[4] = {
>>      helper_stl_mmu,
>>      helper_stq_mmu,
>>  };
>> -#else
>> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
>> -   mmu_idx) */
>> -static void *qemu_ld_helpers[4] = {
>> -    __ldb_mmu,
>> -    __ldw_mmu,
>> -    __ldl_mmu,
>> -    __ldq_mmu,
>> -};
>> -
>> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
>> -   mmu_idx) */
>> -static void *qemu_st_helpers[4] = {
>> -    __stb_mmu,
>> -    __stw_mmu,
>> -    __stl_mmu,
>> -    __stq_mmu,
>> -};
>> -#endif
>>  #endif
>>
>>  static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc)
>> @@ -647,9 +613,7 @@ static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc)
>>
>>      /* slow path */
>>      ir = 3;
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      tcg_out_mov (s, TCG_TYPE_I32, ir++, TCG_AREG0);
>> -#endif
>>  #if TARGET_LONG_BITS == 32
>>      tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg);
>>  #else
>> @@ -849,9 +813,7 @@ static void tcg_out_qemu_st (TCGContext *s, const TCGArg *args, int opc)
>>
>>      /* slow path */
>>      ir = 3;
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      tcg_out_mov (s, TCG_TYPE_I32, ir++, TCG_AREG0);
>> -#endif
>>  #if TARGET_LONG_BITS == 32
>>      tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg);
>>  #else
>> diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c
>> index 27a0ae8..337cd41 100644
>> --- a/tcg/ppc64/tcg-target.c
>> +++ b/tcg/ppc64/tcg-target.c
>> @@ -235,10 +235,8 @@ static int target_parse_constraint (TCGArgConstraint *ct, const char **pct_str)
>>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R3);
>>  #ifdef CONFIG_SOFTMMU
>>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R4);
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R5);
>>  #endif
>> -#endif
>>          break;
>>      case 'S':                   /* qemu_st constraint */
>>          ct->ct |= TCG_CT_REG;
>> @@ -247,10 +245,8 @@ static int target_parse_constraint (TCGArgConstraint *ct, const char **pct_str)
>>  #ifdef CONFIG_SOFTMMU
>>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R4);
>>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R5);
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>          tcg_regset_reset_reg (ct->u.regs, TCG_REG_R6);
>>  #endif
>> -#endif
>>          break;
>>      case 'Z':
>>          ct->ct |= TCG_CT_CONST_U32;
>> @@ -558,7 +554,6 @@ static void tcg_out_ldsta (TCGContext *s, int ret, int addr,
>>
>>  #include "../../softmmu_defs.h"
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>>     int mmu_idx) */
>>  static const void * const qemu_ld_helpers[4] = {
>> @@ -576,25 +571,6 @@ static const void * const qemu_st_helpers[4] = {
>>      helper_stl_mmu,
>>      helper_stq_mmu,
>>  };
>> -#else
>> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
>> -   mmu_idx) */
>> -static void *qemu_ld_helpers[4] = {
>> -    __ldb_mmu,
>> -    __ldw_mmu,
>> -    __ldl_mmu,
>> -    __ldq_mmu,
>> -};
>> -
>> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
>> -   int mmu_idx) */
>> -static void *qemu_st_helpers[4] = {
>> -    __stb_mmu,
>> -    __stw_mmu,
>> -    __stl_mmu,
>> -    __stq_mmu,
>> -};
>> -#endif
>>
>>  static void tcg_out_tlb_read (TCGContext *s, int r0, int r1, int r2,
>>                                int addr_reg, int s_bits, int offset)
>> @@ -676,9 +652,7 @@ static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc)
>>
>>      /* slow path */
>>      ir = 3;
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      tcg_out_mov (s, TCG_TYPE_I64, ir++, TCG_AREG0);
>> -#endif
>>      tcg_out_mov (s, TCG_TYPE_I64, ir++, addr_reg);
>>      tcg_out_movi (s, TCG_TYPE_I64, ir++, mem_index);
>>
>> @@ -827,9 +801,7 @@ static void tcg_out_qemu_st (TCGContext *s, const TCGArg *args, int opc)
>>
>>      /* slow path */
>>      ir = 3;
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      tcg_out_mov (s, TCG_TYPE_I64, ir++, TCG_AREG0);
>> -#endif
>>      tcg_out_mov (s, TCG_TYPE_I64, ir++, addr_reg);
>>      tcg_out_rld (s, RLDICL, ir++, data_reg, 0, 64 - (1 << (3 + opc)));
>>      tcg_out_movi (s, TCG_TYPE_I64, ir++, mem_index);
>> diff --git a/tcg/s390/tcg-target.c b/tcg/s390/tcg-target.c
>> index 04662c1..965e1d4 100644
>> --- a/tcg/s390/tcg-target.c
>> +++ b/tcg/s390/tcg-target.c
>> @@ -301,7 +301,6 @@ static const uint8_t tcg_cond_to_ltr_cond[10] = {
>>
>>  #include "../../softmmu_defs.h"
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>>     int mmu_idx) */
>>  static const void * const qemu_ld_helpers[4] = {
>> @@ -319,25 +318,6 @@ static const void * const qemu_st_helpers[4] = {
>>      helper_stl_mmu,
>>      helper_stq_mmu,
>>  };
>> -#else
>> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
>> -   mmu_idx) */
>> -static void *qemu_ld_helpers[4] = {
>> -    __ldb_mmu,
>> -    __ldw_mmu,
>> -    __ldl_mmu,
>> -    __ldq_mmu,
>> -};
>> -
>> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
>> -   int mmu_idx) */
>> -static void *qemu_st_helpers[4] = {
>> -    __stb_mmu,
>> -    __stw_mmu,
>> -    __stl_mmu,
>> -    __stq_mmu,
>> -};
>> -#endif
>>  #endif
>>
>>  static uint8_t *tb_ret_addr;
>> @@ -1507,7 +1487,6 @@ static void tcg_prepare_qemu_ldst(TCGContext* s, TCGReg data_reg,
>>              tcg_abort();
>>          }
>>          tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R4, mem_index);
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>          /* XXX/FIXME: suboptimal */
>>          tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[2],
>>                      tcg_target_call_iarg_regs[1]);
>> @@ -1515,11 +1494,9 @@ static void tcg_prepare_qemu_ldst(TCGContext* s, TCGReg data_reg,
>>                      tcg_target_call_iarg_regs[0]);
>>          tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>>                      TCG_AREG0);
>> -#endif
>>          tgen_calli(s, (tcg_target_ulong)qemu_st_helpers[s_bits]);
>>      } else {
>>          tcg_out_movi(s, TCG_TYPE_I32, arg1, mem_index);
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>          /* XXX/FIXME: suboptimal */
>>          tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
>>                      tcg_target_call_iarg_regs[2]);
>> @@ -1529,7 +1506,6 @@ static void tcg_prepare_qemu_ldst(TCGContext* s, TCGReg data_reg,
>>                      tcg_target_call_iarg_regs[0]);
>>          tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>>                      TCG_AREG0);
>> -#endif
>>          tgen_calli(s, (tcg_target_ulong)qemu_ld_helpers[s_bits]);
>>
>>          /* sign extension */
>> diff --git a/tcg/s390/tcg-target.h b/tcg/s390/tcg-target.h
>> index d12f90b..4f7dfab 100644
>> --- a/tcg/s390/tcg-target.h
>> +++ b/tcg/s390/tcg-target.h
>> @@ -96,7 +96,6 @@ typedef enum TCGReg {
>>  #define TCG_TARGET_EXTEND_ARGS 1
>>
>>  enum {
>> -    /* Note: must be synced with dyngen-exec.h */
>>      TCG_AREG0 = TCG_REG_R10,
>>  };
>>
>> diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c
>> index 247a278..baed3b4 100644
>> --- a/tcg/sparc/tcg-target.c
>> +++ b/tcg/sparc/tcg-target.c
>> @@ -59,11 +59,7 @@ static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
>>  };
>>  #endif
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  #define ARG_OFFSET 1
>> -#else
>> -#define ARG_OFFSET 0
>> -#endif
>>
>>  static const int tcg_target_reg_alloc_order[] = {
>>      TCG_REG_L0,
>> @@ -161,9 +157,7 @@ static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_O0);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_O1);
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_O2);
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>          tcg_regset_reset_reg(ct->u.regs, TCG_REG_O3);
>> -#endif
>>          break;
>>      case 'I':
>>          ct->ct |= TCG_CT_CONST_S11;
>> @@ -715,7 +709,6 @@ static void tcg_target_qemu_prologue(TCGContext *s)
>>
>>  #include "../../softmmu_defs.h"
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>  /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
>>     int mmu_idx) */
>>  static const void * const qemu_ld_helpers[4] = {
>> @@ -733,25 +726,6 @@ static const void * const qemu_st_helpers[4] = {
>>      helper_stl_mmu,
>>      helper_stq_mmu,
>>  };
>> -#else
>> -/* legacy helper signature: __ld_mmu(target_ulong addr, int
>> -   mmu_idx) */
>> -static const void * const qemu_ld_helpers[4] = {
>> -    __ldb_mmu,
>> -    __ldw_mmu,
>> -    __ldl_mmu,
>> -    __ldq_mmu,
>> -};
>> -
>> -/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
>> -   int mmu_idx) */
>> -static const void * const qemu_st_helpers[4] = {
>> -    __stb_mmu,
>> -    __stw_mmu,
>> -    __stl_mmu,
>> -    __stq_mmu,
>> -};
>> -#endif
>>  #endif
>>
>>  #if TARGET_LONG_BITS == 32
>> @@ -834,7 +808,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>>
>>      /* mov */
>>      tcg_out_movi(s, TCG_TYPE_I32, arg1, mem_index);
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      /* XXX/FIXME: suboptimal */
>>      tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
>>                  tcg_target_call_iarg_regs[2]);
>> @@ -844,7 +817,6 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
>>                  tcg_target_call_iarg_regs[0]);
>>      tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>>                  TCG_AREG0);
>> -#endif
>>
>>      /* XXX: move that code at the end of the TB */
>>      /* qemu_ld_helper[s_bits](arg0, arg1) */
>> @@ -1061,7 +1033,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
>>      /* mov */
>>      tcg_out_movi(s, TCG_TYPE_I32, arg2, mem_index);
>>
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>      /* XXX/FIXME: suboptimal */
>>      tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
>>                  tcg_target_call_iarg_regs[2]);
>> @@ -1071,7 +1042,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
>>                  tcg_target_call_iarg_regs[0]);
>>      tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
>>                  TCG_AREG0);
>> -#endif
>>      /* XXX: move that code at the end of the TB */
>>      /* qemu_st_helper[s_bits](arg0, arg1, arg2) */
>>      tcg_out32(s, CALL | ((((tcg_target_ulong)qemu_st_helpers[s_bits]
>> diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h
>> index ee2274d..0ea87be 100644
>> --- a/tcg/sparc/tcg-target.h
>> +++ b/tcg/sparc/tcg-target.h
>> @@ -125,7 +125,6 @@ typedef enum {
>>  #define TCG_TARGET_HAS_deposit_i64      0
>>  #endif
>>
>> -/* Note: must be synced with dyngen-exec.h */
>>  #ifdef CONFIG_SOLARIS
>>  #define TCG_AREG0 TCG_REG_G2
>>  #elif defined(__sparc_v9__)
>> diff --git a/tcg/tci/tcg-target.c b/tcg/tci/tcg-target.c
>> index ef8580f..003244c 100644
>> --- a/tcg/tci/tcg-target.c
>> +++ b/tcg/tci/tcg-target.c
>> @@ -798,9 +798,7 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
>>      case INDEX_op_qemu_st8:
>>      case INDEX_op_qemu_st16:
>>      case INDEX_op_qemu_st32:
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>          tcg_out_r(s, TCG_AREG0);
>> -#endif
>>          tcg_out_r(s, *args++);
>>          tcg_out_r(s, *args++);
>>  #if TARGET_LONG_BITS > TCG_TARGET_REG_BITS
>> @@ -811,9 +809,7 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
>>  #endif
>>          break;
>>      case INDEX_op_qemu_st64:
>> -#ifdef CONFIG_TCG_PASS_AREG0
>>          tcg_out_r(s, TCG_AREG0);
>> -#endif
>>          tcg_out_r(s, *args++);
>>  #if TCG_TARGET_REG_BITS == 32
>>          tcg_out_r(s, *args++);
>> diff --git a/tci.c b/tci.c
>> index c79350d..ce8a988 100644
>> --- a/tci.c
>> +++ b/tci.c
>> @@ -25,7 +25,6 @@
>>  #endif
>>
>>  #include "qemu-common.h"
>> -#include "dyngen-exec.h"        /* env */
>>  #include "exec-all.h"           /* MAX_OPC_PARAM_IARGS */
>>  #include "tcg-op.h"
>>
>> @@ -63,17 +62,6 @@ uintptr_t tci_tb_ptr;
>>
>>  static tcg_target_ulong tci_reg[TCG_TARGET_NB_REGS];
>>
>> -#if !defined(CONFIG_TCG_PASS_AREG0)
>> -# define helper_ldb_mmu(env, addr, mmu_idx) __ldb_mmu(addr, mmu_idx)
>> -# define helper_ldw_mmu(env, addr, mmu_idx) __ldw_mmu(addr, mmu_idx)
>> -# define helper_ldl_mmu(env, addr, mmu_idx) __ldl_mmu(addr, mmu_idx)
>> -# define helper_ldq_mmu(env, addr, mmu_idx) __ldq_mmu(addr, mmu_idx)
>> -# define helper_stb_mmu(env, addr, val, mmu_idx) __stb_mmu(addr, val, mmu_idx)
>> -# define helper_stw_mmu(env, addr, val, mmu_idx) __stw_mmu(addr, val, mmu_idx)
>> -# define helper_stl_mmu(env, addr, val, mmu_idx) __stl_mmu(addr, val, mmu_idx)
>> -# define helper_stq_mmu(env, addr, val, mmu_idx) __stq_mmu(addr, val, mmu_idx)
>> -#endif /* !CONFIG_TCG_PASS_AREG0 */
>> -
>>  static tcg_target_ulong tci_read_reg(TCGReg index)
>>  {
>>      assert(index < ARRAY_SIZE(tci_reg));
>> diff --git a/user-exec.c b/user-exec.c
>> index b9ea9dd..ef9b172 100644
>> --- a/user-exec.c
>> +++ b/user-exec.c
>> @@ -18,9 +18,6 @@
>>   */
>>  #include "config.h"
>>  #include "cpu.h"
>> -#ifndef CONFIG_TCG_PASS_AREG0
>> -#include "dyngen-exec.h"
>> -#endif
>>  #include "disas.h"
>>  #include "tcg.h"
>>
>> @@ -60,12 +57,6 @@ void cpu_resume_from_signal(CPUArchState *env1, void *puc)
>>      struct sigcontext *uc = puc;
>>  #endif
>>
>> -#ifndef CONFIG_TCG_PASS_AREG0
>> -    env = env1;
>> -
>> -    /* XXX: restore cpu registers saved in host registers */
>> -#endif
>> -
>>      if (puc) {
>>          /* XXX: use siglongjmp ? */
>>  #ifdef __linux__
>> @@ -93,11 +84,6 @@ static inline int handle_cpu_signal(uintptr_t pc, unsigned long address,
>>      TranslationBlock *tb;
>>      int ret;
>>
>> -#ifndef CONFIG_TCG_PASS_AREG0
>> -    if (cpu_single_env) {
>> -        env = cpu_single_env; /* XXX: find a correct solution for multithread */
>> -    }
>> -#endif
>>  #if defined(DEBUG_SIGNAL)
>>      qemu_printf("qemu: SIGSEGV pc=0x%08lx address=%08lx w=%d oldset=0x%08lx\n",
>>                  pc, address, is_write, *(unsigned long *)old_set);
>> --
>> 1.7.2.5
>>
>>
>>
>
> --
> Aurelien Jarno                          GPG: 1024D/F1BCDB73
> aurelien@aurel32.net                 http://www.aurel32.net
diff mbox

Patch

diff --git a/Makefile.target b/Makefile.target
index 7892a8d..d9d54b8 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -80,14 +80,6 @@  obj-$(CONFIG_GDBSTUB_XML) += gdbstub-xml.o
 
 tci-dis.o: QEMU_CFLAGS += -I$(SRC_PATH)/tcg -I$(SRC_PATH)/tcg/tci
 
-# HELPER_CFLAGS is used for all the legacy code compiled with static register
-# variables
-user-exec.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
-
-# Note: this is a workaround. The real fix is to avoid compiling
-# cpu_signal_handler() in user-exec.c.
-%/signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
-
 #########################################################
 # Linux user emulator target
 
diff --git a/configure b/configure
index f60a4b6..e7d333b 100755
--- a/configure
+++ b/configure
@@ -118,7 +118,6 @@  audio_card_list="ac97 es1370 sb16 hda"
 audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
 block_drv_whitelist=""
 host_cc="gcc"
-helper_cflags=""
 libs_softmmu=""
 libs_tools=""
 audio_pt_int=""
@@ -894,7 +893,6 @@  case "$cpu" in
            QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
            if test "$solaris" = "no" ; then
              QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
-             helper_cflags="-ffixed-i0"
            fi
            ;;
     sparc64)
@@ -919,7 +917,6 @@  case "$cpu" in
            QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
            LDFLAGS="-m32 $LDFLAGS"
            cc_i386='$(CC) -m32'
-           helper_cflags="-fomit-frame-pointer"
            host_guest_base="yes"
            ;;
     x86_64)
@@ -3572,7 +3569,6 @@  if test "$sparse" = "yes" ; then
   echo "HOST_CC      := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
   echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
 fi
-echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
 echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
 echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
@@ -3827,13 +3823,6 @@  fi
 
 symlink "$source_path/Makefile.target" "$target_dir/Makefile"
 
-
-case "$target_arch2" in
-  alpha | arm* | cris | i386 | lm32 | m68k | microblaze* | mips* | or32 | s390x | sh4* | sparc* | unicore32 | x86_64 | xtensa* | ppc*)
-    echo "CONFIG_TCG_PASS_AREG0=y" >> $config_target_mak
-  ;;
-esac
-
 upper() {
     echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
 }
diff --git a/cpu-all.h b/cpu-all.h
index 5e07d28..74d3681 100644
--- a/cpu-all.h
+++ b/cpu-all.h
@@ -260,14 +260,6 @@  extern unsigned long reserved_va;
 #define stfl(p, v) stfl_raw(p, v)
 #define stfq(p, v) stfq_raw(p, v)
 
-#ifndef CONFIG_TCG_PASS_AREG0
-#define ldub_code(p) ldub_raw(p)
-#define ldsb_code(p) ldsb_raw(p)
-#define lduw_code(p) lduw_raw(p)
-#define ldsw_code(p) ldsw_raw(p)
-#define ldl_code(p) ldl_raw(p)
-#define ldq_code(p) ldq_raw(p)
-#else
 #define cpu_ldub_code(env1, p) ldub_raw(p)
 #define cpu_ldsb_code(env1, p) ldsb_raw(p)
 #define cpu_lduw_code(env1, p) lduw_raw(p)
@@ -296,7 +288,6 @@  extern unsigned long reserved_va;
 #define cpu_stw_kernel(env, addr, data) stw_raw(addr, data)
 #define cpu_stl_kernel(env, addr, data) stl_raw(addr, data)
 #define cpu_stq_kernel(env, addr, data) stq_raw(addr, data)
-#endif
 
 #define ldub_kernel(p) ldub_raw(p)
 #define ldsb_kernel(p) ldsb_raw(p)
@@ -313,7 +304,6 @@  extern unsigned long reserved_va;
 #define stfl_kernel(p, v) stfl_raw(p, v)
 #define stfq_kernel(p, vt) stfq_raw(p, v)
 
-#ifdef CONFIG_TCG_PASS_AREG0
 #define cpu_ldub_data(env, addr) ldub_raw(addr)
 #define cpu_lduw_data(env, addr) lduw_raw(addr)
 #define cpu_ldl_data(env, addr) ldl_raw(addr)
@@ -321,7 +311,6 @@  extern unsigned long reserved_va;
 #define cpu_stb_data(env, addr, data) stb_raw(addr, data)
 #define cpu_stw_data(env, addr, data) stw_raw(addr, data)
 #define cpu_stl_data(env, addr, data) stl_raw(addr, data)
-#endif
 #endif /* defined(CONFIG_USER_ONLY) */
 
 /* page related stuff */
diff --git a/cputlb.c b/cputlb.c
index d3e7b25..8468517 100644
--- a/cputlb.c
+++ b/cputlb.c
@@ -325,11 +325,7 @@  tb_page_addr_t get_page_addr_code(CPUArchState *env1, target_ulong addr)
     mmu_idx = cpu_mmu_index(env1);
     if (unlikely(env1->tlb_table[mmu_idx][page_index].addr_code !=
                  (addr & TARGET_PAGE_MASK))) {
-#ifdef CONFIG_TCG_PASS_AREG0
         cpu_ldub_code(env1, addr);
-#else
-        ldub_code(addr);
-#endif
     }
     pd = env1->iotlb[mmu_idx][page_index] & ~TARGET_PAGE_MASK;
     mr = iotlb_to_region(pd);
diff --git a/dyngen-exec.h b/dyngen-exec.h
deleted file mode 100644
index 083e20b..0000000
--- a/dyngen-exec.h
+++ /dev/null
@@ -1,70 +0,0 @@ 
-/*
- *  dyngen defines for micro operation code
- *
- *  Copyright (c) 2003 Fabrice Bellard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- */
-#if !defined(__DYNGEN_EXEC_H__)
-#define __DYNGEN_EXEC_H__
-
-#if defined(CONFIG_TCG_INTERPRETER)
-/* The TCG interpreter does not need a special register AREG0,
- * but it is possible to use one by defining AREG0.
- * On i386, register edi seems to work. */
-/* Run without special register AREG0 or use a value defined elsewhere. */
-#elif defined(__i386__)
-#define AREG0 "ebp"
-#elif defined(__x86_64__)
-#define AREG0 "r14"
-#elif defined(_ARCH_PPC)
-#define AREG0 "r27"
-#elif defined(__arm__)
-#define AREG0 "r6"
-#elif defined(__hppa__)
-#define AREG0 "r17"
-#elif defined(__mips__)
-#define AREG0 "s0"
-#elif defined(__sparc__)
-#ifdef CONFIG_SOLARIS
-#define AREG0 "g2"
-#else
-#ifdef __sparc_v9__
-#define AREG0 "g5"
-#else
-#define AREG0 "g6"
-#endif
-#endif
-#elif defined(__s390__)
-#define AREG0 "r10"
-#elif defined(__alpha__)
-/* Note $15 is the frame pointer, so anything in op-i386.c that would
-   require a frame pointer, like alloca, would probably loose.  */
-#define AREG0 "$15"
-#elif defined(__mc68000)
-#define AREG0 "%a5"
-#elif defined(__ia64__)
-#define AREG0 "r7"
-#else
-#error unsupported CPU
-#endif
-
-#if defined(AREG0)
-register CPUArchState *env asm(AREG0);
-#else
-/* TODO: Try env = cpu_single_env. */
-extern CPUArchState *env;
-#endif
-
-#endif /* !defined(__DYNGEN_EXEC_H__) */
diff --git a/exec-all.h b/exec-all.h
index c5ec8e1..c5d3a13 100644
--- a/exec-all.h
+++ b/exec-all.h
@@ -323,9 +323,6 @@  void tlb_fill(CPUArchState *env1, target_ulong addr, int is_write, int mmu_idx,
 
 #define ACCESS_TYPE (NB_MMU_MODES + 1)
 #define MEMSUFFIX _code
-#ifndef CONFIG_TCG_PASS_AREG0
-#define env cpu_single_env
-#endif
 
 #define DATA_SIZE 1
 #include "softmmu_header.h"
@@ -341,7 +338,6 @@  void tlb_fill(CPUArchState *env1, target_ulong addr, int is_write, int mmu_idx,
 
 #undef ACCESS_TYPE
 #undef MEMSUFFIX
-#undef env
 
 #endif
 
diff --git a/hw/spapr_hcall.c b/hw/spapr_hcall.c
index a5990a9..abd847f 100644
--- a/hw/spapr_hcall.c
+++ b/hw/spapr_hcall.c
@@ -1,6 +1,5 @@ 
 #include "sysemu.h"
 #include "cpu.h"
-#include "dyngen-exec.h"
 #include "qemu-char.h"
 #include "sysemu.h"
 #include "qemu-char.h"
diff --git a/softmmu_defs.h b/softmmu_defs.h
index 8d59f9d..1f25e33 100644
--- a/softmmu_defs.h
+++ b/softmmu_defs.h
@@ -9,25 +9,6 @@ 
 #ifndef SOFTMMU_DEFS_H
 #define SOFTMMU_DEFS_H
 
-#ifndef CONFIG_TCG_PASS_AREG0
-uint8_t __ldb_mmu(target_ulong addr, int mmu_idx);
-void __stb_mmu(target_ulong addr, uint8_t val, int mmu_idx);
-uint16_t __ldw_mmu(target_ulong addr, int mmu_idx);
-void __stw_mmu(target_ulong addr, uint16_t val, int mmu_idx);
-uint32_t __ldl_mmu(target_ulong addr, int mmu_idx);
-void __stl_mmu(target_ulong addr, uint32_t val, int mmu_idx);
-uint64_t __ldq_mmu(target_ulong addr, int mmu_idx);
-void __stq_mmu(target_ulong addr, uint64_t val, int mmu_idx);
-
-uint8_t __ldb_cmmu(target_ulong addr, int mmu_idx);
-void __stb_cmmu(target_ulong addr, uint8_t val, int mmu_idx);
-uint16_t __ldw_cmmu(target_ulong addr, int mmu_idx);
-void __stw_cmmu(target_ulong addr, uint16_t val, int mmu_idx);
-uint32_t __ldl_cmmu(target_ulong addr, int mmu_idx);
-void __stl_cmmu(target_ulong addr, uint32_t val, int mmu_idx);
-uint64_t __ldq_cmmu(target_ulong addr, int mmu_idx);
-void __stq_cmmu(target_ulong addr, uint64_t val, int mmu_idx);
-#else
 uint8_t helper_ldb_mmu(CPUArchState *env, target_ulong addr, int mmu_idx);
 void helper_stb_mmu(CPUArchState *env, target_ulong addr, uint8_t val,
                     int mmu_idx);
@@ -54,5 +35,3 @@  uint64_t helper_ldq_cmmu(CPUArchState *env, target_ulong addr, int mmu_idx);
 void helper_stq_cmmu(CPUArchState *env, target_ulong addr, uint64_t val,
                      int mmu_idx);
 #endif
-
-#endif
diff --git a/softmmu_header.h b/softmmu_header.h
index cf1aa38..d8d9c81 100644
--- a/softmmu_header.h
+++ b/softmmu_header.h
@@ -78,23 +78,10 @@ 
 #define ADDR_READ addr_read
 #endif
 
-#ifndef CONFIG_TCG_PASS_AREG0
-#define ENV_PARAM
-#define ENV_VAR
-#define CPU_PREFIX
-#define HELPER_PREFIX __
-#else
-#define ENV_PARAM CPUArchState *env,
-#define ENV_VAR env,
-#define CPU_PREFIX cpu_
-#define HELPER_PREFIX helper_
-#endif
-
 /* generic load/store macros */
 
 static inline RES_TYPE
-glue(glue(glue(CPU_PREFIX, ld), USUFFIX), MEMSUFFIX)(ENV_PARAM
-                                                     target_ulong ptr)
+glue(glue(cpu_ld, USUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr)
 {
     int page_index;
     RES_TYPE res;
@@ -106,9 +93,7 @@  glue(glue(glue(CPU_PREFIX, ld), USUFFIX), MEMSUFFIX)(ENV_PARAM
     mmu_idx = CPU_MMU_INDEX;
     if (unlikely(env->tlb_table[mmu_idx][page_index].ADDR_READ !=
                  (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
-        res = glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_VAR
-                                                                     addr,
-                                                                     mmu_idx);
+        res = glue(glue(helper_ld, SUFFIX), MMUSUFFIX)(env, addr, mmu_idx);
     } else {
         uintptr_t hostaddr = addr + env->tlb_table[mmu_idx][page_index].addend;
         res = glue(glue(ld, USUFFIX), _raw)(hostaddr);
@@ -118,8 +103,7 @@  glue(glue(glue(CPU_PREFIX, ld), USUFFIX), MEMSUFFIX)(ENV_PARAM
 
 #if DATA_SIZE <= 2
 static inline int
-glue(glue(glue(CPU_PREFIX, lds), SUFFIX), MEMSUFFIX)(ENV_PARAM
-                                                     target_ulong ptr)
+glue(glue(cpu_lds, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr)
 {
     int res, page_index;
     target_ulong addr;
@@ -130,8 +114,8 @@  glue(glue(glue(CPU_PREFIX, lds), SUFFIX), MEMSUFFIX)(ENV_PARAM
     mmu_idx = CPU_MMU_INDEX;
     if (unlikely(env->tlb_table[mmu_idx][page_index].ADDR_READ !=
                  (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
-        res = (DATA_STYPE)glue(glue(glue(HELPER_PREFIX, ld), SUFFIX),
-                               MMUSUFFIX)(ENV_VAR addr, mmu_idx);
+        res = (DATA_STYPE)glue(glue(helper_ld, SUFFIX),
+                               MMUSUFFIX)(env, addr, mmu_idx);
     } else {
         uintptr_t hostaddr = addr + env->tlb_table[mmu_idx][page_index].addend;
         res = glue(glue(lds, SUFFIX), _raw)(hostaddr);
@@ -145,8 +129,8 @@  glue(glue(glue(CPU_PREFIX, lds), SUFFIX), MEMSUFFIX)(ENV_PARAM
 /* generic store macro */
 
 static inline void
-glue(glue(glue(CPU_PREFIX, st), SUFFIX), MEMSUFFIX)(ENV_PARAM target_ulong ptr,
-                                                    RES_TYPE v)
+glue(glue(cpu_st, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr,
+                                      RES_TYPE v)
 {
     int page_index;
     target_ulong addr;
@@ -157,8 +141,7 @@  glue(glue(glue(CPU_PREFIX, st), SUFFIX), MEMSUFFIX)(ENV_PARAM target_ulong ptr,
     mmu_idx = CPU_MMU_INDEX;
     if (unlikely(env->tlb_table[mmu_idx][page_index].addr_write !=
                  (addr & (TARGET_PAGE_MASK | (DATA_SIZE - 1))))) {
-        glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_VAR addr, v,
-                                                               mmu_idx);
+        glue(glue(helper_st, SUFFIX), MMUSUFFIX)(env, addr, v, mmu_idx);
     } else {
         uintptr_t hostaddr = addr + env->tlb_table[mmu_idx][page_index].addend;
         glue(glue(st, SUFFIX), _raw)(hostaddr, v);
@@ -170,52 +153,50 @@  glue(glue(glue(CPU_PREFIX, st), SUFFIX), MEMSUFFIX)(ENV_PARAM target_ulong ptr,
 #if ACCESS_TYPE != (NB_MMU_MODES + 1)
 
 #if DATA_SIZE == 8
-static inline float64 glue(glue(CPU_PREFIX, ldfq), MEMSUFFIX)(ENV_PARAM
-                                                              target_ulong ptr)
+static inline float64 glue(cpu_ldfq, MEMSUFFIX)(CPUArchState *env,
+                                                target_ulong ptr)
 {
     union {
         float64 d;
         uint64_t i;
     } u;
-    u.i = glue(glue(CPU_PREFIX, ldq), MEMSUFFIX)(ENV_VAR ptr);
+    u.i = glue(cpu_ldq, MEMSUFFIX)(env, ptr);
     return u.d;
 }
 
-static inline void glue(glue(CPU_PREFIX, stfq), MEMSUFFIX)(ENV_PARAM
-                                                           target_ulong ptr,
-                                                           float64 v)
+static inline void glue(cpu_stfq, MEMSUFFIX)(CPUArchState *env,
+                                             target_ulong ptr, float64 v)
 {
     union {
         float64 d;
         uint64_t i;
     } u;
     u.d = v;
-    glue(glue(CPU_PREFIX, stq), MEMSUFFIX)(ENV_VAR ptr, u.i);
+    glue(cpu_stq, MEMSUFFIX)(env, ptr, u.i);
 }
 #endif /* DATA_SIZE == 8 */
 
 #if DATA_SIZE == 4
-static inline float32 glue(glue(CPU_PREFIX, ldfl), MEMSUFFIX)(ENV_PARAM
-                                                              target_ulong ptr)
+static inline float32 glue(cpu_ldfl, MEMSUFFIX)(CPUArchState *env,
+                                                target_ulong ptr)
 {
     union {
         float32 f;
         uint32_t i;
     } u;
-    u.i = glue(glue(CPU_PREFIX, ldl), MEMSUFFIX)(ENV_VAR ptr);
+    u.i = glue(cpu_ldl, MEMSUFFIX)(env, ptr);
     return u.f;
 }
 
-static inline void glue(glue(CPU_PREFIX, stfl), MEMSUFFIX)(ENV_PARAM
-                                                           target_ulong ptr,
-                                                           float32 v)
+static inline void glue(cpu_stfl, MEMSUFFIX)(CPUArchState *env,
+                                             target_ulong ptr, float32 v)
 {
     union {
         float32 f;
         uint32_t i;
     } u;
     u.f = v;
-    glue(glue(CPU_PREFIX, stl), MEMSUFFIX)(ENV_VAR ptr, u.i);
+    glue(cpu_stl, MEMSUFFIX)(env, ptr, u.i);
 }
 #endif /* DATA_SIZE == 4 */
 
@@ -230,7 +211,3 @@  static inline void glue(glue(CPU_PREFIX, stfl), MEMSUFFIX)(ENV_PARAM
 #undef CPU_MMU_INDEX
 #undef MMUSUFFIX
 #undef ADDR_READ
-#undef ENV_PARAM
-#undef ENV_VAR
-#undef CPU_PREFIX
-#undef HELPER_PREFIX
diff --git a/softmmu_template.h b/softmmu_template.h
index b8bd700..e2490f0 100644
--- a/softmmu_template.h
+++ b/softmmu_template.h
@@ -54,23 +54,11 @@ 
 #define ADDR_READ addr_read
 #endif
 
-#ifndef CONFIG_TCG_PASS_AREG0
-#define ENV_PARAM
-#define ENV_VAR
-#define CPU_PREFIX
-#define HELPER_PREFIX __
-#else
-#define ENV_PARAM CPUArchState *env,
-#define ENV_VAR env,
-#define CPU_PREFIX cpu_
-#define HELPER_PREFIX helper_
-#endif
-
-static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
+static DATA_TYPE glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(CPUArchState *env,
                                                         target_ulong addr,
                                                         int mmu_idx,
                                                         uintptr_t retaddr);
-static inline DATA_TYPE glue(io_read, SUFFIX)(ENV_PARAM
+static inline DATA_TYPE glue(io_read, SUFFIX)(CPUArchState *env,
                                               target_phys_addr_t physaddr,
                                               target_ulong addr,
                                               uintptr_t retaddr)
@@ -104,9 +92,8 @@  static inline DATA_TYPE glue(io_read, SUFFIX)(ENV_PARAM
 
 /* handle all cases except unaligned access which span two pages */
 DATA_TYPE
-glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
-                                                       target_ulong addr,
-                                                       int mmu_idx)
+glue(glue(helper_ld, SUFFIX), MMUSUFFIX)(CPUArchState *env, target_ulong addr,
+                                         int mmu_idx)
 {
     DATA_TYPE res;
     int index;
@@ -126,15 +113,15 @@  glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
                 goto do_unaligned_access;
             retaddr = GETPC();
             ioaddr = env->iotlb[mmu_idx][index];
-            res = glue(io_read, SUFFIX)(ENV_VAR ioaddr, addr, retaddr);
+            res = glue(io_read, SUFFIX)(env, ioaddr, addr, retaddr);
         } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
             /* slow unaligned access (it spans two pages or IO) */
         do_unaligned_access:
             retaddr = GETPC();
 #ifdef ALIGNED_ONLY
-            do_unaligned_access(ENV_VAR addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
+            do_unaligned_access(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
 #endif
-            res = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_VAR addr,
+            res = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(env, addr,
                                                          mmu_idx, retaddr);
         } else {
             /* unaligned/aligned access in the same page */
@@ -142,7 +129,7 @@  glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
 #ifdef ALIGNED_ONLY
             if ((addr & (DATA_SIZE - 1)) != 0) {
                 retaddr = GETPC();
-                do_unaligned_access(ENV_VAR addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
+                do_unaligned_access(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
             }
 #endif
             addend = env->tlb_table[mmu_idx][index].addend;
@@ -154,7 +141,7 @@  glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
         retaddr = GETPC();
 #ifdef ALIGNED_ONLY
         if ((addr & (DATA_SIZE - 1)) != 0)
-            do_unaligned_access(ENV_VAR addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
+            do_unaligned_access(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
 #endif
         tlb_fill(env, addr, READ_ACCESS_TYPE, mmu_idx, retaddr);
         goto redo;
@@ -164,7 +151,7 @@  glue(glue(glue(HELPER_PREFIX, ld), SUFFIX), MMUSUFFIX)(ENV_PARAM
 
 /* handle all unaligned cases */
 static DATA_TYPE
-glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
+glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(CPUArchState *env,
                                        target_ulong addr,
                                        int mmu_idx,
                                        uintptr_t retaddr)
@@ -183,15 +170,15 @@  glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
             if ((addr & (DATA_SIZE - 1)) != 0)
                 goto do_unaligned_access;
             ioaddr = env->iotlb[mmu_idx][index];
-            res = glue(io_read, SUFFIX)(ENV_VAR ioaddr, addr, retaddr);
+            res = glue(io_read, SUFFIX)(env, ioaddr, addr, retaddr);
         } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
         do_unaligned_access:
             /* slow unaligned access (it spans two pages) */
             addr1 = addr & ~(DATA_SIZE - 1);
             addr2 = addr1 + DATA_SIZE;
-            res1 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_VAR addr1,
+            res1 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(env, addr1,
                                                           mmu_idx, retaddr);
-            res2 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_VAR addr2,
+            res2 = glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(env, addr2,
                                                           mmu_idx, retaddr);
             shift = (addr & (DATA_SIZE - 1)) * 8;
 #ifdef TARGET_WORDS_BIGENDIAN
@@ -216,13 +203,13 @@  glue(glue(slow_ld, SUFFIX), MMUSUFFIX)(ENV_PARAM
 
 #ifndef SOFTMMU_CODE_ACCESS
 
-static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
+static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(CPUArchState *env,
                                                    target_ulong addr,
                                                    DATA_TYPE val,
                                                    int mmu_idx,
                                                    uintptr_t retaddr);
 
-static inline void glue(io_write, SUFFIX)(ENV_PARAM
+static inline void glue(io_write, SUFFIX)(CPUArchState *env,
                                           target_phys_addr_t physaddr,
                                           DATA_TYPE val,
                                           target_ulong addr,
@@ -253,10 +240,9 @@  static inline void glue(io_write, SUFFIX)(ENV_PARAM
 #endif /* SHIFT > 2 */
 }
 
-void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
-                                                            target_ulong addr,
-                                                            DATA_TYPE val,
-                                                            int mmu_idx)
+void glue(glue(helper_st, SUFFIX), MMUSUFFIX)(CPUArchState *env,
+                                              target_ulong addr, DATA_TYPE val,
+                                              int mmu_idx)
 {
     target_phys_addr_t ioaddr;
     target_ulong tlb_addr;
@@ -273,14 +259,14 @@  void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
                 goto do_unaligned_access;
             retaddr = GETPC();
             ioaddr = env->iotlb[mmu_idx][index];
-            glue(io_write, SUFFIX)(ENV_VAR ioaddr, val, addr, retaddr);
+            glue(io_write, SUFFIX)(env, ioaddr, val, addr, retaddr);
         } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
         do_unaligned_access:
             retaddr = GETPC();
 #ifdef ALIGNED_ONLY
-            do_unaligned_access(ENV_VAR addr, 1, mmu_idx, retaddr);
+            do_unaligned_access(env, addr, 1, mmu_idx, retaddr);
 #endif
-            glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_VAR addr, val,
+            glue(glue(slow_st, SUFFIX), MMUSUFFIX)(env, addr, val,
                                                    mmu_idx, retaddr);
         } else {
             /* aligned/unaligned access in the same page */
@@ -288,7 +274,7 @@  void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
 #ifdef ALIGNED_ONLY
             if ((addr & (DATA_SIZE - 1)) != 0) {
                 retaddr = GETPC();
-                do_unaligned_access(ENV_VAR addr, 1, mmu_idx, retaddr);
+                do_unaligned_access(env, addr, 1, mmu_idx, retaddr);
             }
 #endif
             addend = env->tlb_table[mmu_idx][index].addend;
@@ -300,7 +286,7 @@  void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
         retaddr = GETPC();
 #ifdef ALIGNED_ONLY
         if ((addr & (DATA_SIZE - 1)) != 0)
-            do_unaligned_access(ENV_VAR addr, 1, mmu_idx, retaddr);
+            do_unaligned_access(env, addr, 1, mmu_idx, retaddr);
 #endif
         tlb_fill(env, addr, 1, mmu_idx, retaddr);
         goto redo;
@@ -308,7 +294,7 @@  void glue(glue(glue(HELPER_PREFIX, st), SUFFIX), MMUSUFFIX)(ENV_PARAM
 }
 
 /* handles all unaligned cases */
-static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
+static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(CPUArchState *env,
                                                    target_ulong addr,
                                                    DATA_TYPE val,
                                                    int mmu_idx,
@@ -327,7 +313,7 @@  static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
             if ((addr & (DATA_SIZE - 1)) != 0)
                 goto do_unaligned_access;
             ioaddr = env->iotlb[mmu_idx][index];
-            glue(io_write, SUFFIX)(ENV_VAR ioaddr, val, addr, retaddr);
+            glue(io_write, SUFFIX)(env, ioaddr, val, addr, retaddr);
         } else if (((addr & ~TARGET_PAGE_MASK) + DATA_SIZE - 1) >= TARGET_PAGE_SIZE) {
         do_unaligned_access:
             /* XXX: not efficient, but simple */
@@ -335,11 +321,11 @@  static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
              * previous page from the TLB cache.  */
             for(i = DATA_SIZE - 1; i >= 0; i--) {
 #ifdef TARGET_WORDS_BIGENDIAN
-                glue(slow_stb, MMUSUFFIX)(ENV_VAR addr + i,
+                glue(slow_stb, MMUSUFFIX)(env, addr + i,
                                           val >> (((DATA_SIZE - 1) * 8) - (i * 8)),
                                           mmu_idx, retaddr);
 #else
-                glue(slow_stb, MMUSUFFIX)(ENV_VAR addr + i,
+                glue(slow_stb, MMUSUFFIX)(env, addr + i,
                                           val >> (i * 8),
                                           mmu_idx, retaddr);
 #endif
@@ -366,7 +352,3 @@  static void glue(glue(slow_st, SUFFIX), MMUSUFFIX)(ENV_PARAM
 #undef USUFFIX
 #undef DATA_SIZE
 #undef ADDR_READ
-#undef ENV_PARAM
-#undef ENV_VAR
-#undef CPU_PREFIX
-#undef HELPER_PREFIX
diff --git a/target-m68k/op_helper.c b/target-m68k/op_helper.c
index 3116287..aa00504 100644
--- a/target-m68k/op_helper.c
+++ b/target-m68k/op_helper.c
@@ -192,9 +192,6 @@  void HELPER(divu)(CPUM68KState *env, uint32_t word)
     quot = num / den;
     rem = num % den;
     flags = 0;
-    /* Avoid using a PARAM1 of zero.  This breaks dyngen because it uses
-       the address of a symbol, and gcc knows symbols can't have address
-       zero.  */
     if (word && quot > 0xffff)
         flags |= CCF_V;
     if (quot == 0)
diff --git a/target-sparc/Makefile.objs b/target-sparc/Makefile.objs
index a93e07d..9fc42ea 100644
--- a/target-sparc/Makefile.objs
+++ b/target-sparc/Makefile.objs
@@ -4,5 +4,3 @@  obj-y += fop_helper.o cc_helper.o win_helper.o mmu_helper.o ldst_helper.o
 obj-$(TARGET_SPARC) += int32_helper.o
 obj-$(TARGET_SPARC64) += int64_helper.o
 obj-$(TARGET_SPARC64) += vis_helper.o
-
-$(obj)/op_helper.o: QEMU_CFLAGS += $(HELPER_CFLAGS)
diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c
index cf0ca3d..aed3b53 100644
--- a/tcg/arm/tcg-target.c
+++ b/tcg/arm/tcg-target.c
@@ -176,7 +176,7 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
            so don't use these. */
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1);
-#if defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
+#if TARGET_LONG_BITS == 64
         /* If we're passing env to the helper as r0 and need a regpair
          * for the address then r2 will be overwritten as we're setting
          * up the args to the helper.
@@ -204,8 +204,7 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
            use these. */
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R0);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R1);
-#if defined(CONFIG_SOFTMMU) && \
-    defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
+#if defined(CONFIG_SOFTMMU) && (TARGET_LONG_BITS == 64)
         /* Avoid clashes with registers being used for helper args */
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R2);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
@@ -223,7 +222,7 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
 #ifdef CONFIG_SOFTMMU
         /* r2 is still needed to load data_reg, so don't use it. */
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R2);
-#if defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
+#if TARGET_LONG_BITS == 64
         /* Avoid clashes with registers being used for helper args */
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
 #endif
@@ -954,7 +953,6 @@  static inline void tcg_out_goto_label(TCGContext *s, int cond, int label_index)
 
 #include "../../softmmu_defs.h"
 
-#ifdef CONFIG_TCG_PASS_AREG0
 /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
    int mmu_idx) */
 static const void * const qemu_ld_helpers[4] = {
@@ -972,25 +970,6 @@  static const void * const qemu_st_helpers[4] = {
     helper_stl_mmu,
     helper_stq_mmu,
 };
-#else
-/* legacy helper signature: __ld_mmu(target_ulong addr, int
-   mmu_idx) */
-static void *qemu_ld_helpers[4] = {
-    __ldb_mmu,
-    __ldw_mmu,
-    __ldl_mmu,
-    __ldq_mmu,
-};
-
-/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
-   int mmu_idx) */
-static void *qemu_st_helpers[4] = {
-    __stb_mmu,
-    __stw_mmu,
-    __stl_mmu,
-    __stq_mmu,
-};
-#endif
 
 /* Helper routines for marshalling helper function arguments into
  * the correct registers and stack.
@@ -1203,9 +1182,7 @@  static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
      * trash by moving the earlier arguments into them.
      */
     argreg = TCG_REG_R0;
-#ifdef CONFIG_TCG_PASS_AREG0
     argreg = tcg_out_arg_reg32(s, argreg, TCG_AREG0);
-#endif
 #if TARGET_LONG_BITS == 64
     argreg = tcg_out_arg_reg64(s, argreg, addr_reg, addr_reg2);
 #else
@@ -1421,9 +1398,7 @@  static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
      * trash by moving the earlier arguments into them.
      */
     argreg = TCG_REG_R0;
-#ifdef CONFIG_TCG_PASS_AREG0
     argreg = tcg_out_arg_reg32(s, argreg, TCG_AREG0);
-#endif
 #if TARGET_LONG_BITS == 64
     argreg = tcg_out_arg_reg64(s, argreg, addr_reg, addr_reg2);
 #else
diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h
index f90b834..c0b8f72 100644
--- a/tcg/arm/tcg-target.h
+++ b/tcg/arm/tcg-target.h
@@ -77,7 +77,6 @@  typedef enum {
 #define TCG_TARGET_HAS_GUEST_BASE
 
 enum {
-    /* Note: must be synced with dyngen-exec.h */
     TCG_AREG0 = TCG_REG_R6,
 };
 
diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
index 2885212..8b81b70 100644
--- a/tcg/hppa/tcg-target.c
+++ b/tcg/hppa/tcg-target.c
@@ -882,7 +882,6 @@  static void tcg_out_setcond2(TCGContext *s, int cond, TCGArg ret,
 #if defined(CONFIG_SOFTMMU)
 #include "../../softmmu_defs.h"
 
-#ifdef CONFIG_TCG_PASS_AREG0
 /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
    int mmu_idx) */
 static const void * const qemu_ld_helpers[4] = {
@@ -900,25 +899,6 @@  static const void * const qemu_st_helpers[4] = {
     helper_stl_mmu,
     helper_stq_mmu,
 };
-#else
-/* legacy helper signature: __ld_mmu(target_ulong addr, int
-   mmu_idx) */
-static void *qemu_ld_helpers[4] = {
-    __ldb_mmu,
-    __ldw_mmu,
-    __ldl_mmu,
-    __ldq_mmu,
-};
-
-/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
-   int mmu_idx) */
-static void *qemu_st_helpers[4] = {
-    __stb_mmu,
-    __stw_mmu,
-    __stl_mmu,
-    __stq_mmu,
-};
-#endif
 
 /* Load and compare a TLB entry, and branch if TLB miss.  OFFSET is set to
    the offset of the first ADDR_READ or ADDR_WRITE member of the appropriate
@@ -1085,7 +1065,6 @@  static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
     }
     tcg_out_movi(s, TCG_TYPE_I32, argreg, mem_index);
 
-#ifdef CONFIG_TCG_PASS_AREG0
     /* XXX/FIXME: suboptimal */
     tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[2],
                 tcg_target_call_iarg_regs[1]);
@@ -1093,7 +1072,6 @@  static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
                 tcg_target_call_iarg_regs[0]);
     tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
                 TCG_AREG0);
-#endif
     tcg_out_call(s, qemu_ld_helpers[opc & 3]);
 
     switch (opc) {
@@ -1245,7 +1223,6 @@  static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
         tcg_abort();
     }
 
-#ifdef CONFIG_TCG_PASS_AREG0
     /* XXX/FIXME: suboptimal */
     tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
                 tcg_target_call_iarg_regs[2]);
@@ -1255,7 +1232,6 @@  static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
                 tcg_target_call_iarg_regs[0]);
     tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
                 TCG_AREG0);
-#endif
     tcg_out_call(s, qemu_st_helpers[opc]);
 
     /* label2: */
diff --git a/tcg/hppa/tcg-target.h b/tcg/hppa/tcg-target.h
index d4bf6fe..01ef960 100644
--- a/tcg/hppa/tcg-target.h
+++ b/tcg/hppa/tcg-target.h
@@ -104,7 +104,6 @@  typedef enum {
 
 #define TCG_TARGET_HAS_GUEST_BASE
 
-/* Note: must be synced with dyngen-exec.h */
 #define TCG_AREG0 TCG_REG_R17
 
 
diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c
index da17bba..34c2df8 100644
--- a/tcg/i386/tcg-target.c
+++ b/tcg/i386/tcg-target.c
@@ -183,9 +183,7 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
             tcg_regset_set32(ct->u.regs, 0, 0xffff);
             tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[0]);
             tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[1]);
-#ifdef CONFIG_TCG_PASS_AREG0
             tcg_regset_reset_reg(ct->u.regs, tcg_target_call_iarg_regs[2]);
-#endif
         } else {
             tcg_regset_set32(ct->u.regs, 0, 0xff);
             tcg_regset_reset_reg(ct->u.regs, TCG_REG_EAX);
@@ -965,7 +963,6 @@  static void tcg_out_jmp(TCGContext *s, tcg_target_long dest)
 
 #include "../../softmmu_defs.h"
 
-#ifdef CONFIG_TCG_PASS_AREG0
 /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
    int mmu_idx) */
 static const void *qemu_ld_helpers[4] = {
@@ -983,25 +980,6 @@  static const void *qemu_st_helpers[4] = {
     helper_stl_mmu,
     helper_stq_mmu,
 };
-#else
-/* legacy helper signature: __ld_mmu(target_ulong addr, int
-   mmu_idx) */
-static void *qemu_ld_helpers[4] = {
-    __ldb_mmu,
-    __ldw_mmu,
-    __ldl_mmu,
-    __ldq_mmu,
-};
-
-/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
-   int mmu_idx) */
-static void *qemu_st_helpers[4] = {
-    __stb_mmu,
-    __stw_mmu,
-    __stl_mmu,
-    __stq_mmu,
-};
-#endif
 
 /* Perform the TLB load and compare.
 
@@ -1220,16 +1198,13 @@  static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
     }
     tcg_out_push(s, args[addrlo_idx]);
     stack_adjust += 4;
-#ifdef CONFIG_TCG_PASS_AREG0
     tcg_out_push(s, TCG_AREG0);
     stack_adjust += 4;
-#endif
 #else
     /* The first argument is already loaded with addrlo.  */
     arg_idx = 1;
     tcg_out_movi(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[arg_idx],
                  mem_index);
-#ifdef CONFIG_TCG_PASS_AREG0
     /* XXX/FIXME: suboptimal */
     tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[3],
                 tcg_target_call_iarg_regs[2]);
@@ -1240,7 +1215,6 @@  static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
     tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[0],
                 TCG_AREG0);
 #endif
-#endif
 
     tcg_out_calli(s, (tcg_target_long)qemu_ld_helpers[s_bits]);
 
@@ -1436,16 +1410,13 @@  static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
     }
     tcg_out_push(s, args[addrlo_idx]);
     stack_adjust += 4;
-#ifdef CONFIG_TCG_PASS_AREG0
     tcg_out_push(s, TCG_AREG0);
     stack_adjust += 4;
-#endif
 #else
     tcg_out_mov(s, (opc == 3 ? TCG_TYPE_I64 : TCG_TYPE_I32),
                 tcg_target_call_iarg_regs[1], data_reg);
     tcg_out_movi(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[2], mem_index);
     stack_adjust = 0;
-#ifdef CONFIG_TCG_PASS_AREG0
     /* XXX/FIXME: suboptimal */
     tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[3],
                 tcg_target_call_iarg_regs[2]);
@@ -1456,7 +1427,6 @@  static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
     tcg_out_mov(s, TCG_TYPE_I64, tcg_target_call_iarg_regs[0],
                 TCG_AREG0);
 #endif
-#endif
 
     tcg_out_calli(s, (tcg_target_long)qemu_st_helpers[s_bits]);
 
diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
index c3cfe05..8be42f3 100644
--- a/tcg/i386/tcg-target.h
+++ b/tcg/i386/tcg-target.h
@@ -116,7 +116,6 @@  typedef enum {
 
 #define TCG_TARGET_HAS_GUEST_BASE
 
-/* Note: must be synced with dyngen-exec.h */
 #if TCG_TARGET_REG_BITS == 64
 # define TCG_AREG0 TCG_REG_R14
 #else
diff --git a/tcg/ia64/tcg-target.c b/tcg/ia64/tcg-target.c
index dc588db..1745038 100644
--- a/tcg/ia64/tcg-target.c
+++ b/tcg/ia64/tcg-target.c
@@ -1452,7 +1452,6 @@  static inline void tcg_out_qemu_tlb(TCGContext *s, TCGArg addr_reg,
                                TCG_REG_P7, TCG_REG_R3, TCG_REG_R57));
 }
 
-#ifdef CONFIG_TCG_PASS_AREG0
 /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
    int mmu_idx) */
 static const void * const qemu_ld_helpers[4] = {
@@ -1461,16 +1460,6 @@  static const void * const qemu_ld_helpers[4] = {
     helper_ldl_mmu,
     helper_ldq_mmu,
 };
-#else
-/* legacy helper signature: __ld_mmu(target_ulong addr, int
-   mmu_idx) */
-static void *qemu_ld_helpers[4] = {
-    __ldb_mmu,
-    __ldw_mmu,
-    __ldl_mmu,
-    __ldq_mmu,
-};
-#endif
 
 static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
 {
@@ -1530,7 +1519,6 @@  static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
                        tcg_opc_m1 (TCG_REG_P7, OPC_LD8_M1, TCG_REG_R1, TCG_REG_R2),
                        tcg_opc_i18(TCG_REG_P0, OPC_NOP_I18, 0));
     }
-#ifdef CONFIG_TCG_PASS_AREG0
     /* XXX/FIXME: suboptimal */
     tcg_out_bundle(s, mII,
                    tcg_opc_a5 (TCG_REG_P7, OPC_ADDL_A5, TCG_REG_R58,
@@ -1539,7 +1527,6 @@  static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
                                TCG_REG_R57, 0, TCG_REG_R56),
                    tcg_opc_a4 (TCG_REG_P7, OPC_ADDS_A4,
                                TCG_REG_R56, 0, TCG_AREG0));
-#endif
     if (!bswap || s_bits == 0) {
         tcg_out_bundle(s, miB,
                        tcg_opc_m48(TCG_REG_P0, OPC_NOP_M48, 0),
@@ -1570,7 +1557,6 @@  static inline void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, int opc)
     }
 }
 
-#ifdef CONFIG_TCG_PASS_AREG0
 /* helper signature: helper_st_mmu(CPUState *env, target_ulong addr,
    uintxx_t val, int mmu_idx) */
 static const void * const qemu_st_helpers[4] = {
@@ -1579,16 +1565,6 @@  static const void * const qemu_st_helpers[4] = {
     helper_stl_mmu,
     helper_stq_mmu,
 };
-#else
-/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
-   int mmu_idx) */
-static void *qemu_st_helpers[4] = {
-    __stb_mmu,
-    __stw_mmu,
-    __stl_mmu,
-    __stq_mmu,
-};
-#endif
 
 static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
 {
@@ -1658,7 +1634,6 @@  static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
         data_reg = TCG_REG_R2;
     }
 
-#ifdef CONFIG_TCG_PASS_AREG0
     /* XXX/FIXME: suboptimal */
     tcg_out_bundle(s, mII,
                    tcg_opc_a5 (TCG_REG_P7, OPC_ADDL_A5, TCG_REG_R59,
@@ -1674,15 +1649,6 @@  static inline void tcg_out_qemu_st(TCGContext *s, const TCGArg *args, int opc)
                                TCG_REG_R56, 0, TCG_AREG0),
                    tcg_opc_b5 (TCG_REG_P7, OPC_BR_CALL_SPTK_MANY_B5,
                                TCG_REG_B0, TCG_REG_B6));
-#else
-    tcg_out_bundle(s, miB,
-                   tcg_opc_m4 (TCG_REG_P6, opc_st_m4[opc],
-                               data_reg, TCG_REG_R3),
-                   tcg_opc_a5 (TCG_REG_P7, OPC_ADDL_A5, TCG_REG_R58,
-                               mem_index, TCG_REG_R0),
-                   tcg_opc_b5 (TCG_REG_P7, OPC_BR_CALL_SPTK_MANY_B5,
-                               TCG_REG_B0, TCG_REG_B6));
-#endif
 }
 
 #else /* !CONFIG_SOFTMMU */
diff --git a/tcg/ia64/tcg-target.h b/tcg/ia64/tcg-target.h
index 0631b9f..c22962a 100644
--- a/tcg/ia64/tcg-target.h
+++ b/tcg/ia64/tcg-target.h
@@ -140,7 +140,6 @@  typedef enum {
 #define TCG_TARGET_HAS_not_i32          0 /* xor r1, -1, r3 */
 #define TCG_TARGET_HAS_not_i64          0 /* xor r1, -1, r3 */
 
-/* Note: must be synced with dyngen-exec.h */
 #define TCG_AREG0 TCG_REG_R7
 
 /* Guest base is supported */
diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c
index 1006e28..74db83d 100644
--- a/tcg/mips/tcg-target.c
+++ b/tcg/mips/tcg-target.c
@@ -217,7 +217,7 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
         tcg_regset_set(ct->u.regs, 0xffffffff);
 #if defined(CONFIG_SOFTMMU)
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0);
-# if defined(CONFIG_TCG_PASS_AREG0) && (TARGET_LONG_BITS == 64)
+# if (TARGET_LONG_BITS == 64)
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_A2);
 # endif
 #endif
@@ -227,12 +227,11 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
         tcg_regset_set(ct->u.regs, 0xffffffff);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_A0);
 #if defined(CONFIG_SOFTMMU)
-# if (defined(CONFIG_TCG_PASS_AREG0) && TARGET_LONG_BITS == 32) || \
-     (!defined(CONFIG_TCG_PASS_AREG0) && TARGET_LONG_BITS == 64)
+# if (TARGET_LONG_BITS == 32)
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_A1);
 # endif
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_A2);
-# if defined(CONFIG_TCG_PASS_AREG0) && TARGET_LONG_BITS == 64
+# if TARGET_LONG_BITS == 64
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_A3);
 # endif
 #endif
@@ -821,7 +820,6 @@  static void tcg_out_setcond2(TCGContext *s, TCGCond cond, int ret,
 
 #include "../../softmmu_defs.h"
 
-#ifdef CONFIG_TCG_PASS_AREG0
 /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
    int mmu_idx) */
 static const void * const qemu_ld_helpers[4] = {
@@ -839,25 +837,6 @@  static const void * const qemu_st_helpers[4] = {
     helper_stl_mmu,
     helper_stq_mmu,
 };
-#else
-/* legacy helper signature: __ld_mmu(target_ulong addr, int
-   mmu_idx) */
-static void *qemu_ld_helpers[4] = {
-    __ldb_mmu,
-    __ldw_mmu,
-    __ldl_mmu,
-    __ldq_mmu,
-};
-
-/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
-   int mmu_idx) */
-static void *qemu_st_helpers[4] = {
-    __stb_mmu,
-    __stw_mmu,
-    __stl_mmu,
-    __stq_mmu,
-};
-#endif
 #endif
 
 static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
@@ -942,9 +921,7 @@  static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
 
     /* slow path */
     arg_num = 0;
-# ifdef CONFIG_TCG_PASS_AREG0
     tcg_out_call_iarg_reg32(s, &arg_num, TCG_AREG0);
-# endif
 # if TARGET_LONG_BITS == 64
     tcg_out_call_iarg_reg64(s, &arg_num, addr_regl, addr_regh);
 # else
@@ -1127,9 +1104,7 @@  static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
 
     /* slow path */
     arg_num = 0;
-# ifdef CONFIG_TCG_PASS_AREG0
     tcg_out_call_iarg_reg32(s, &arg_num, TCG_AREG0);
-# endif
 # if TARGET_LONG_BITS == 64
     tcg_out_call_iarg_reg64(s, &arg_num, addr_regl, addr_regh);
 # else
diff --git a/tcg/mips/tcg-target.h b/tcg/mips/tcg-target.h
index d3c804d..1c61931 100644
--- a/tcg/mips/tcg-target.h
+++ b/tcg/mips/tcg-target.h
@@ -96,7 +96,6 @@  typedef enum {
 #define TCG_TARGET_HAS_ext8u_i32        0 /* andi rt, rs, 0xff   */
 #define TCG_TARGET_HAS_ext16u_i32       0 /* andi rt, rs, 0xffff */
 
-/* Note: must be synced with dyngen-exec.h */
 #define TCG_AREG0 TCG_REG_S0
 
 /* guest base is supported */
diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
index 0cff181..26c4b33 100644
--- a/tcg/ppc/tcg-target.c
+++ b/tcg/ppc/tcg-target.c
@@ -248,7 +248,6 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
         tcg_regset_set32(ct->u.regs, 0, 0xffffffff);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4);
-#ifdef CONFIG_TCG_PASS_AREG0
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
 #if TARGET_LONG_BITS == 64
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
@@ -256,11 +255,6 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R7);
 #endif
 #endif
-#else /* !AREG0 */
-#if TARGET_LONG_BITS == 64
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
-#endif
-#endif
         break;
     case 'K':                   /* qemu_st[8..32] constraint */
         ct->ct |= TCG_CT_REG;
@@ -268,7 +262,6 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R3);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R4);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
-#ifdef CONFIG_TCG_PASS_AREG0
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
 #if TARGET_LONG_BITS == 64
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R7);
@@ -276,11 +269,6 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R8);
 #endif
 #endif
-#else /* !AREG0 */
-#if TARGET_LONG_BITS == 64
-        tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
-#endif
-#endif
         break;
     case 'M':                   /* qemu_st64 constraint */
         ct->ct |= TCG_CT_REG;
@@ -290,12 +278,10 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R5);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R6);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R7);
-#if defined(CONFIG_TCG_PASS_AREG0)
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R8);
 #ifdef TCG_TARGET_CALL_ALIGN_ARGS
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_R9);
 #endif
-#endif
         break;
 #else
     case 'L':
@@ -541,7 +527,6 @@  static void tcg_out_call (TCGContext *s, tcg_target_long arg, int const_arg)
 
 #include "../../softmmu_defs.h"
 
-#ifdef CONFIG_TCG_PASS_AREG0
 /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
    int mmu_idx) */
 static const void * const qemu_ld_helpers[4] = {
@@ -559,25 +544,6 @@  static const void * const qemu_st_helpers[4] = {
     helper_stl_mmu,
     helper_stq_mmu,
 };
-#else
-/* legacy helper signature: __ld_mmu(target_ulong addr, int
-   mmu_idx) */
-static void *qemu_ld_helpers[4] = {
-    __ldb_mmu,
-    __ldw_mmu,
-    __ldl_mmu,
-    __ldq_mmu,
-};
-
-/* legacy helper signature: __ld_mmu(target_ulong addr, int
-   mmu_idx) */
-static void *qemu_st_helpers[4] = {
-    __stb_mmu,
-    __stw_mmu,
-    __stl_mmu,
-    __stq_mmu,
-};
-#endif
 #endif
 
 static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc)
@@ -647,9 +613,7 @@  static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc)
 
     /* slow path */
     ir = 3;
-#ifdef CONFIG_TCG_PASS_AREG0
     tcg_out_mov (s, TCG_TYPE_I32, ir++, TCG_AREG0);
-#endif
 #if TARGET_LONG_BITS == 32
     tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg);
 #else
@@ -849,9 +813,7 @@  static void tcg_out_qemu_st (TCGContext *s, const TCGArg *args, int opc)
 
     /* slow path */
     ir = 3;
-#ifdef CONFIG_TCG_PASS_AREG0
     tcg_out_mov (s, TCG_TYPE_I32, ir++, TCG_AREG0);
-#endif
 #if TARGET_LONG_BITS == 32
     tcg_out_mov (s, TCG_TYPE_I32, ir++, addr_reg);
 #else
diff --git a/tcg/ppc64/tcg-target.c b/tcg/ppc64/tcg-target.c
index 27a0ae8..337cd41 100644
--- a/tcg/ppc64/tcg-target.c
+++ b/tcg/ppc64/tcg-target.c
@@ -235,10 +235,8 @@  static int target_parse_constraint (TCGArgConstraint *ct, const char **pct_str)
         tcg_regset_reset_reg (ct->u.regs, TCG_REG_R3);
 #ifdef CONFIG_SOFTMMU
         tcg_regset_reset_reg (ct->u.regs, TCG_REG_R4);
-#ifdef CONFIG_TCG_PASS_AREG0
         tcg_regset_reset_reg (ct->u.regs, TCG_REG_R5);
 #endif
-#endif
         break;
     case 'S':                   /* qemu_st constraint */
         ct->ct |= TCG_CT_REG;
@@ -247,10 +245,8 @@  static int target_parse_constraint (TCGArgConstraint *ct, const char **pct_str)
 #ifdef CONFIG_SOFTMMU
         tcg_regset_reset_reg (ct->u.regs, TCG_REG_R4);
         tcg_regset_reset_reg (ct->u.regs, TCG_REG_R5);
-#ifdef CONFIG_TCG_PASS_AREG0
         tcg_regset_reset_reg (ct->u.regs, TCG_REG_R6);
 #endif
-#endif
         break;
     case 'Z':
         ct->ct |= TCG_CT_CONST_U32;
@@ -558,7 +554,6 @@  static void tcg_out_ldsta (TCGContext *s, int ret, int addr,
 
 #include "../../softmmu_defs.h"
 
-#ifdef CONFIG_TCG_PASS_AREG0
 /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
    int mmu_idx) */
 static const void * const qemu_ld_helpers[4] = {
@@ -576,25 +571,6 @@  static const void * const qemu_st_helpers[4] = {
     helper_stl_mmu,
     helper_stq_mmu,
 };
-#else
-/* legacy helper signature: __ld_mmu(target_ulong addr, int
-   mmu_idx) */
-static void *qemu_ld_helpers[4] = {
-    __ldb_mmu,
-    __ldw_mmu,
-    __ldl_mmu,
-    __ldq_mmu,
-};
-
-/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
-   int mmu_idx) */
-static void *qemu_st_helpers[4] = {
-    __stb_mmu,
-    __stw_mmu,
-    __stl_mmu,
-    __stq_mmu,
-};
-#endif
 
 static void tcg_out_tlb_read (TCGContext *s, int r0, int r1, int r2,
                               int addr_reg, int s_bits, int offset)
@@ -676,9 +652,7 @@  static void tcg_out_qemu_ld (TCGContext *s, const TCGArg *args, int opc)
 
     /* slow path */
     ir = 3;
-#ifdef CONFIG_TCG_PASS_AREG0
     tcg_out_mov (s, TCG_TYPE_I64, ir++, TCG_AREG0);
-#endif
     tcg_out_mov (s, TCG_TYPE_I64, ir++, addr_reg);
     tcg_out_movi (s, TCG_TYPE_I64, ir++, mem_index);
 
@@ -827,9 +801,7 @@  static void tcg_out_qemu_st (TCGContext *s, const TCGArg *args, int opc)
 
     /* slow path */
     ir = 3;
-#ifdef CONFIG_TCG_PASS_AREG0
     tcg_out_mov (s, TCG_TYPE_I64, ir++, TCG_AREG0);
-#endif
     tcg_out_mov (s, TCG_TYPE_I64, ir++, addr_reg);
     tcg_out_rld (s, RLDICL, ir++, data_reg, 0, 64 - (1 << (3 + opc)));
     tcg_out_movi (s, TCG_TYPE_I64, ir++, mem_index);
diff --git a/tcg/s390/tcg-target.c b/tcg/s390/tcg-target.c
index 04662c1..965e1d4 100644
--- a/tcg/s390/tcg-target.c
+++ b/tcg/s390/tcg-target.c
@@ -301,7 +301,6 @@  static const uint8_t tcg_cond_to_ltr_cond[10] = {
 
 #include "../../softmmu_defs.h"
 
-#ifdef CONFIG_TCG_PASS_AREG0
 /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
    int mmu_idx) */
 static const void * const qemu_ld_helpers[4] = {
@@ -319,25 +318,6 @@  static const void * const qemu_st_helpers[4] = {
     helper_stl_mmu,
     helper_stq_mmu,
 };
-#else
-/* legacy helper signature: __ld_mmu(target_ulong addr, int
-   mmu_idx) */
-static void *qemu_ld_helpers[4] = {
-    __ldb_mmu,
-    __ldw_mmu,
-    __ldl_mmu,
-    __ldq_mmu,
-};
-
-/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
-   int mmu_idx) */
-static void *qemu_st_helpers[4] = {
-    __stb_mmu,
-    __stw_mmu,
-    __stl_mmu,
-    __stq_mmu,
-};
-#endif
 #endif
 
 static uint8_t *tb_ret_addr;
@@ -1507,7 +1487,6 @@  static void tcg_prepare_qemu_ldst(TCGContext* s, TCGReg data_reg,
             tcg_abort();
         }
         tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_R4, mem_index);
-#ifdef CONFIG_TCG_PASS_AREG0
         /* XXX/FIXME: suboptimal */
         tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[2],
                     tcg_target_call_iarg_regs[1]);
@@ -1515,11 +1494,9 @@  static void tcg_prepare_qemu_ldst(TCGContext* s, TCGReg data_reg,
                     tcg_target_call_iarg_regs[0]);
         tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
                     TCG_AREG0);
-#endif
         tgen_calli(s, (tcg_target_ulong)qemu_st_helpers[s_bits]);
     } else {
         tcg_out_movi(s, TCG_TYPE_I32, arg1, mem_index);
-#ifdef CONFIG_TCG_PASS_AREG0
         /* XXX/FIXME: suboptimal */
         tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
                     tcg_target_call_iarg_regs[2]);
@@ -1529,7 +1506,6 @@  static void tcg_prepare_qemu_ldst(TCGContext* s, TCGReg data_reg,
                     tcg_target_call_iarg_regs[0]);
         tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
                     TCG_AREG0);
-#endif
         tgen_calli(s, (tcg_target_ulong)qemu_ld_helpers[s_bits]);
 
         /* sign extension */
diff --git a/tcg/s390/tcg-target.h b/tcg/s390/tcg-target.h
index d12f90b..4f7dfab 100644
--- a/tcg/s390/tcg-target.h
+++ b/tcg/s390/tcg-target.h
@@ -96,7 +96,6 @@  typedef enum TCGReg {
 #define TCG_TARGET_EXTEND_ARGS 1
 
 enum {
-    /* Note: must be synced with dyngen-exec.h */
     TCG_AREG0 = TCG_REG_R10,
 };
 
diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c
index 247a278..baed3b4 100644
--- a/tcg/sparc/tcg-target.c
+++ b/tcg/sparc/tcg-target.c
@@ -59,11 +59,7 @@  static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = {
 };
 #endif
 
-#ifdef CONFIG_TCG_PASS_AREG0
 #define ARG_OFFSET 1
-#else
-#define ARG_OFFSET 0
-#endif
 
 static const int tcg_target_reg_alloc_order[] = {
     TCG_REG_L0,
@@ -161,9 +157,7 @@  static int target_parse_constraint(TCGArgConstraint *ct, const char **pct_str)
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_O0);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_O1);
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_O2);
-#ifdef CONFIG_TCG_PASS_AREG0
         tcg_regset_reset_reg(ct->u.regs, TCG_REG_O3);
-#endif
         break;
     case 'I':
         ct->ct |= TCG_CT_CONST_S11;
@@ -715,7 +709,6 @@  static void tcg_target_qemu_prologue(TCGContext *s)
 
 #include "../../softmmu_defs.h"
 
-#ifdef CONFIG_TCG_PASS_AREG0
 /* helper signature: helper_ld_mmu(CPUState *env, target_ulong addr,
    int mmu_idx) */
 static const void * const qemu_ld_helpers[4] = {
@@ -733,25 +726,6 @@  static const void * const qemu_st_helpers[4] = {
     helper_stl_mmu,
     helper_stq_mmu,
 };
-#else
-/* legacy helper signature: __ld_mmu(target_ulong addr, int
-   mmu_idx) */
-static const void * const qemu_ld_helpers[4] = {
-    __ldb_mmu,
-    __ldw_mmu,
-    __ldl_mmu,
-    __ldq_mmu,
-};
-
-/* legacy helper signature: __st_mmu(target_ulong addr, uintxx_t val,
-   int mmu_idx) */
-static const void * const qemu_st_helpers[4] = {
-    __stb_mmu,
-    __stw_mmu,
-    __stl_mmu,
-    __stq_mmu,
-};
-#endif
 #endif
 
 #if TARGET_LONG_BITS == 32
@@ -834,7 +808,6 @@  static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
 
     /* mov */
     tcg_out_movi(s, TCG_TYPE_I32, arg1, mem_index);
-#ifdef CONFIG_TCG_PASS_AREG0
     /* XXX/FIXME: suboptimal */
     tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
                 tcg_target_call_iarg_regs[2]);
@@ -844,7 +817,6 @@  static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args,
                 tcg_target_call_iarg_regs[0]);
     tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
                 TCG_AREG0);
-#endif
 
     /* XXX: move that code at the end of the TB */
     /* qemu_ld_helper[s_bits](arg0, arg1) */
@@ -1061,7 +1033,6 @@  static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
     /* mov */
     tcg_out_movi(s, TCG_TYPE_I32, arg2, mem_index);
 
-#ifdef CONFIG_TCG_PASS_AREG0
     /* XXX/FIXME: suboptimal */
     tcg_out_mov(s, TCG_TYPE_I32, tcg_target_call_iarg_regs[3],
                 tcg_target_call_iarg_regs[2]);
@@ -1071,7 +1042,6 @@  static void tcg_out_qemu_st(TCGContext *s, const TCGArg *args,
                 tcg_target_call_iarg_regs[0]);
     tcg_out_mov(s, TCG_TYPE_PTR, tcg_target_call_iarg_regs[0],
                 TCG_AREG0);
-#endif
     /* XXX: move that code at the end of the TB */
     /* qemu_st_helper[s_bits](arg0, arg1, arg2) */
     tcg_out32(s, CALL | ((((tcg_target_ulong)qemu_st_helpers[s_bits]
diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h
index ee2274d..0ea87be 100644
--- a/tcg/sparc/tcg-target.h
+++ b/tcg/sparc/tcg-target.h
@@ -125,7 +125,6 @@  typedef enum {
 #define TCG_TARGET_HAS_deposit_i64      0
 #endif
 
-/* Note: must be synced with dyngen-exec.h */
 #ifdef CONFIG_SOLARIS
 #define TCG_AREG0 TCG_REG_G2
 #elif defined(__sparc_v9__)
diff --git a/tcg/tci/tcg-target.c b/tcg/tci/tcg-target.c
index ef8580f..003244c 100644
--- a/tcg/tci/tcg-target.c
+++ b/tcg/tci/tcg-target.c
@@ -798,9 +798,7 @@  static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
     case INDEX_op_qemu_st8:
     case INDEX_op_qemu_st16:
     case INDEX_op_qemu_st32:
-#ifdef CONFIG_TCG_PASS_AREG0
         tcg_out_r(s, TCG_AREG0);
-#endif
         tcg_out_r(s, *args++);
         tcg_out_r(s, *args++);
 #if TARGET_LONG_BITS > TCG_TARGET_REG_BITS
@@ -811,9 +809,7 @@  static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
 #endif
         break;
     case INDEX_op_qemu_st64:
-#ifdef CONFIG_TCG_PASS_AREG0
         tcg_out_r(s, TCG_AREG0);
-#endif
         tcg_out_r(s, *args++);
 #if TCG_TARGET_REG_BITS == 32
         tcg_out_r(s, *args++);
diff --git a/tci.c b/tci.c
index c79350d..ce8a988 100644
--- a/tci.c
+++ b/tci.c
@@ -25,7 +25,6 @@ 
 #endif
 
 #include "qemu-common.h"
-#include "dyngen-exec.h"        /* env */
 #include "exec-all.h"           /* MAX_OPC_PARAM_IARGS */
 #include "tcg-op.h"
 
@@ -63,17 +62,6 @@  uintptr_t tci_tb_ptr;
 
 static tcg_target_ulong tci_reg[TCG_TARGET_NB_REGS];
 
-#if !defined(CONFIG_TCG_PASS_AREG0)
-# define helper_ldb_mmu(env, addr, mmu_idx) __ldb_mmu(addr, mmu_idx)
-# define helper_ldw_mmu(env, addr, mmu_idx) __ldw_mmu(addr, mmu_idx)
-# define helper_ldl_mmu(env, addr, mmu_idx) __ldl_mmu(addr, mmu_idx)
-# define helper_ldq_mmu(env, addr, mmu_idx) __ldq_mmu(addr, mmu_idx)
-# define helper_stb_mmu(env, addr, val, mmu_idx) __stb_mmu(addr, val, mmu_idx)
-# define helper_stw_mmu(env, addr, val, mmu_idx) __stw_mmu(addr, val, mmu_idx)
-# define helper_stl_mmu(env, addr, val, mmu_idx) __stl_mmu(addr, val, mmu_idx)
-# define helper_stq_mmu(env, addr, val, mmu_idx) __stq_mmu(addr, val, mmu_idx)
-#endif /* !CONFIG_TCG_PASS_AREG0 */
-
 static tcg_target_ulong tci_read_reg(TCGReg index)
 {
     assert(index < ARRAY_SIZE(tci_reg));
diff --git a/user-exec.c b/user-exec.c
index b9ea9dd..ef9b172 100644
--- a/user-exec.c
+++ b/user-exec.c
@@ -18,9 +18,6 @@ 
  */
 #include "config.h"
 #include "cpu.h"
-#ifndef CONFIG_TCG_PASS_AREG0
-#include "dyngen-exec.h"
-#endif
 #include "disas.h"
 #include "tcg.h"
 
@@ -60,12 +57,6 @@  void cpu_resume_from_signal(CPUArchState *env1, void *puc)
     struct sigcontext *uc = puc;
 #endif
 
-#ifndef CONFIG_TCG_PASS_AREG0
-    env = env1;
-
-    /* XXX: restore cpu registers saved in host registers */
-#endif
-
     if (puc) {
         /* XXX: use siglongjmp ? */
 #ifdef __linux__
@@ -93,11 +84,6 @@  static inline int handle_cpu_signal(uintptr_t pc, unsigned long address,
     TranslationBlock *tb;
     int ret;
 
-#ifndef CONFIG_TCG_PASS_AREG0
-    if (cpu_single_env) {
-        env = cpu_single_env; /* XXX: find a correct solution for multithread */
-    }
-#endif
 #if defined(DEBUG_SIGNAL)
     qemu_printf("qemu: SIGSEGV pc=0x%08lx address=%08lx w=%d oldset=0x%08lx\n",
                 pc, address, is_write, *(unsigned long *)old_set);