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

Reply via email to