[Top][All Lists]
[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
>