Richard Henderson writes: > On 05/27/2016 09:01 AM, Lluís Vilanova wrote: >> -void tcg_gen_qemu_ld_i32(TCGv_i32 val, TCGv addr, TCGArg idx, TCGMemOp >> memop) >> +static inline void do_tcg_gen_qemu_ld_i32(TCGv_i32 val, TCGv addr, TCGArg >> idx, >> + TCGMemOp memop) >> { >> memop = tcg_canonicalize_memop(memop, 0, 0); >> gen_ldst_i32(INDEX_op_qemu_ld_i32, val, addr, memop, idx); >> } >> >> -void tcg_gen_qemu_st_i32(TCGv_i32 val, TCGv addr, TCGArg idx, TCGMemOp >> memop) >> +void tcg_gen_qemu_ld_i32(TCGv_i32 val, TCGv addr, TCGArg idx, TCGMemOp >> memop) >> +{ >> + trace_guest_mem_before_tcg(tcg_ctx.cpu, tcg_ctx.tcg_env, >> + addr, trace_mem_get_info(memop, 0)); >> + do_tcg_gen_qemu_ld_i32(val, addr, idx, memop); >> +} > ...
>> void tcg_gen_qemu_ld_i64(TCGv_i64 val, TCGv addr, TCGArg idx, TCGMemOp memop) >> { >> + trace_guest_mem_before_tcg(tcg_ctx.cpu, tcg_ctx.tcg_env, >> + addr, trace_mem_get_info(memop, 0)); >> + >> if (TCG_TARGET_REG_BITS == 32 && (memop & MO_SIZE) < MO_64) { >> - tcg_gen_qemu_ld_i32(TCGV_LOW(val), addr, idx, memop); >> + do_tcg_gen_qemu_ld_i32(TCGV_LOW(val), addr, idx, memop); >> if (memop & MO_SIGN) { >> tcg_gen_sari_i32(TCGV_HIGH(val), TCGV_LOW(val), 31); >> } else { > I think the better solution here is to move the tracing for 64-bit operations > below this IF, rather than fiddling around with inline functions et al. Much cleaner, thanks. Lluis