qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] tci: Support targets with CONFIG_TCG_PASS_AREG0


From: Blue Swirl
Subject: Re: [Qemu-devel] [PATCH] tci: Support targets with CONFIG_TCG_PASS_AREG0 (fix broken build)
Date: Sat, 7 Apr 2012 14:21:12 +0000

On Sat, Apr 7, 2012 at 09:48, Stefan Weil <address@hidden> wrote:
> Builds with --enable-tcg-interpreter failed because more and more
> targets (currently alpha and sparc) replaced the global env in AREG0
> by function parameters.
>
> Convert the TCG interpreter to use the new helper functions and add
> defines for those targets which still use AREG0.
>
> Cc: Blue Swirl <address@hidden>
> Signed-off-by: Stefan Weil <address@hidden>
> ---
>  tci.c |   35 +++++++++++++++++++++++------------
>  1 files changed, 23 insertions(+), 12 deletions(-)
>
> diff --git a/tci.c b/tci.c
> index 70e7bfb..c43fe7d 100644
> --- a/tci.c
> +++ b/tci.c
> @@ -63,6 +63,17 @@ void *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 */

I was for a moment considering if it would be useful to push this
higher, it would simplify things a lot. But it's better to make the
conversions in target helpers explicit, especially 'env' parameter
changes.

Thanks, applied.

> +
>  static tcg_target_ulong tci_read_reg(TCGReg index)
>  {
>     assert(index < ARRAY_SIZE(tci_reg));
> @@ -1049,7 +1060,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>             t0 = *tb_ptr++;
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
> -            tmp8 = __ldb_mmu(taddr, tci_read_i(&tb_ptr));
> +            tmp8 = helper_ldb_mmu(env, taddr, tci_read_i(&tb_ptr));
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> @@ -1061,7 +1072,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>             t0 = *tb_ptr++;
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
> -            tmp8 = __ldb_mmu(taddr, tci_read_i(&tb_ptr));
> +            tmp8 = helper_ldb_mmu(env, taddr, tci_read_i(&tb_ptr));
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> @@ -1073,7 +1084,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>             t0 = *tb_ptr++;
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
> -            tmp16 = __ldw_mmu(taddr, tci_read_i(&tb_ptr));
> +            tmp16 = helper_ldw_mmu(env, taddr, tci_read_i(&tb_ptr));
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> @@ -1085,7 +1096,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>             t0 = *tb_ptr++;
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
> -            tmp16 = __ldw_mmu(taddr, tci_read_i(&tb_ptr));
> +            tmp16 = helper_ldw_mmu(env, taddr, tci_read_i(&tb_ptr));
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> @@ -1098,7 +1109,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>             t0 = *tb_ptr++;
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
> -            tmp32 = __ldl_mmu(taddr, tci_read_i(&tb_ptr));
> +            tmp32 = helper_ldl_mmu(env, taddr, tci_read_i(&tb_ptr));
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> @@ -1110,7 +1121,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>             t0 = *tb_ptr++;
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
> -            tmp32 = __ldl_mmu(taddr, tci_read_i(&tb_ptr));
> +            tmp32 = helper_ldl_mmu(env, taddr, tci_read_i(&tb_ptr));
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> @@ -1123,7 +1134,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>             t0 = *tb_ptr++;
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
> -            tmp32 = __ldl_mmu(taddr, tci_read_i(&tb_ptr));
> +            tmp32 = helper_ldl_mmu(env, taddr, tci_read_i(&tb_ptr));
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> @@ -1138,7 +1149,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>  #endif
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
> -            tmp64 = __ldq_mmu(taddr, tci_read_i(&tb_ptr));
> +            tmp64 = helper_ldq_mmu(env, taddr, tci_read_i(&tb_ptr));
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> @@ -1154,7 +1165,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
>             t2 = tci_read_i(&tb_ptr);
> -            __stb_mmu(taddr, t0, t2);
> +            helper_stb_mmu(env, taddr, t0, t2);
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> @@ -1166,7 +1177,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
>             t2 = tci_read_i(&tb_ptr);
> -            __stw_mmu(taddr, t0, t2);
> +            helper_stw_mmu(env, taddr, t0, t2);
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> @@ -1178,7 +1189,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
>             t2 = tci_read_i(&tb_ptr);
> -            __stl_mmu(taddr, t0, t2);
> +            helper_stl_mmu(env, taddr, t0, t2);
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> @@ -1190,7 +1201,7 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState 
> *cpustate, uint8_t *tb_ptr)
>             taddr = tci_read_ulong(&tb_ptr);
>  #ifdef CONFIG_SOFTMMU
>             t2 = tci_read_i(&tb_ptr);
> -            __stq_mmu(taddr, tmp64, t2);
> +            helper_stq_mmu(env, taddr, tmp64, t2);
>  #else
>             host_addr = (tcg_target_ulong)taddr;
>             assert(taddr == host_addr);
> --
> 1.7.9
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]