addr1 = get_address(ctx, a->rs, imm);
addr2 = get_address(ctx, a->rs, memop_size(memop) + imm);
+ memop |= MO_TE;
tcg_gen_qemu_ld_tl(t1, addr1, ctx->mem_idx, memop);
tcg_gen_qemu_ld_tl(t2, addr2, ctx->mem_idx, memop);
gen_set_gpr(ctx, a->rd1, t1);
{
REQUIRE_XTHEADMEMPAIR(ctx);
REQUIRE_64BIT(ctx);
- return gen_loadpair_tl(ctx, a, MO_TE | MO_SQ, 4);
+ return gen_loadpair_tl(ctx, a, MO_SQ, 4);
}
static bool trans_th_lwd(DisasContext *ctx, arg_th_pair *a)
{
REQUIRE_XTHEADMEMPAIR(ctx);
- return gen_loadpair_tl(ctx, a, MO_TE | MO_SL, 3);
+ return gen_loadpair_tl(ctx, a, MO_SL, 3);
}
static bool trans_th_lwud(DisasContext *ctx, arg_th_pair *a)
{
REQUIRE_XTHEADMEMPAIR(ctx);
- return gen_loadpair_tl(ctx, a, MO_TE | MO_UL, 3);
+ return gen_loadpair_tl(ctx, a, MO_UL, 3);
}
static bool gen_storepair_tl(DisasContext *ctx, arg_th_pair *a, MemOp memop,
addr1 = get_address(ctx, a->rs, imm);
addr2 = get_address(ctx, a->rs, memop_size(memop) + imm);
+ memop |= MO_TE;
tcg_gen_qemu_st_tl(data1, addr1, ctx->mem_idx, memop);
tcg_gen_qemu_st_tl(data2, addr2, ctx->mem_idx, memop);
return true;
{
REQUIRE_XTHEADMEMPAIR(ctx);
REQUIRE_64BIT(ctx);
- return gen_storepair_tl(ctx, a, MO_TE | MO_SQ, 4);
+ return gen_storepair_tl(ctx, a, MO_SQ, 4);
}
static bool trans_th_swd(DisasContext *ctx, arg_th_pair *a)
{
REQUIRE_XTHEADMEMPAIR(ctx);
- return gen_storepair_tl(ctx, a, MO_TE | MO_SL, 3);
+ return gen_storepair_tl(ctx, a, MO_SL, 3);
}
/* XTheadSync */