Hi, Richard. On 07/23/2021 09:49 AM, Richard Henderson wrote: > On 7/20/21 11:53 PM, Song Gao wrote: >> +#define TRANS_AM_W(name, op) \ >> +static bool trans_ ## name(DisasContext *ctx, arg_ ## name * a) \ >> +{ \ >> + TCGv addr, val, ret; \ >> + TCGv Rd = cpu_gpr[a->rd]; \ >> + int mem_idx = ctx->mem_idx; \ >> + \ >> + if (a->rd == 0) { \ >> + return true; \ >> + } \ >> + if ((a->rd != 0) && ((a->rj == a->rd) || (a->rk == a->rd))) { \ >> + printf("%s: warning, register equal\n", __func__); \ >> + return false; \ >> + } \ >> + \ >> + addr = get_gpr(a->rj); \ >> + val = get_gpr(a->rk); \ >> + ret = tcg_temp_new(); \ >> + \ >> + tcg_gen_atomic_##op##_tl(ret, addr, val, mem_idx, MO_TESL | \ >> + ctx->default_tcg_memop_mask); \ >> + tcg_gen_mov_tl(Rd, ret); \ >> + \ >> + tcg_temp_free(ret); \ >> + \ >> + return true; \ >> +} > > No printf. Use a common routine instead of macros. > OK.
Thanks Song Gao. > > r~