Commit 3531dc3dd9 for qemu.org
commit 3531dc3dd99a923de784b033c073670eb056f39e
Author: Philippe Mathieu-Daudé <philmd@linaro.org>
Date: Mon Feb 2 21:41:45 2026 +0100
target/ppc: Inline need_byteswap() and replace translator_ldl_swap()
Rather than using a boolean with translator_ldl_swap(),
get the MemOp endianness with ppc_code_endian() and pass
it to translator_ldl_end().
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Anton Johansson <anjo@rev.ng>
Message-Id: <20260202210106.93257-8-philmd@linaro.org>
diff --git a/target/ppc/translate.c b/target/ppc/translate.c
index e1753ce19c..e9acfa239e 100644
--- a/target/ppc/translate.c
+++ b/target/ppc/translate.c
@@ -225,12 +225,6 @@ static inline MemOp ppc_code_endian_dc(const DisasContext *ctx)
return MO_BE ^ (ctx->le_mode * MO_BSWAP);
}
-/* Return true iff byteswap is needed in a scalar memop */
-static inline bool need_byteswap(const DisasContext *ctx)
-{
- return ppc_code_endian_dc(ctx) != MO_TE;
-}
-
/* True when active word size < size of target_long. */
#ifdef TARGET_PPC64
# define NARROW_MODE(C) (!(C)->sf_mode)
@@ -6595,6 +6589,7 @@ static void ppc_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
DisasContext *ctx = container_of(dcbase, DisasContext, base);
PowerPCCPU *cpu = POWERPC_CPU(cs);
CPUPPCState *env = cpu_env(cs);
+ MemOp mo_endian = ppc_code_endian_dc(ctx);
target_ulong pc;
uint32_t insn;
bool ok;
@@ -6604,7 +6599,7 @@ static void ppc_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
ctx->base.pc_next, ctx->mem_idx, (int)msr_ir);
ctx->cia = pc = ctx->base.pc_next;
- insn = translator_ldl_swap(env, dcbase, pc, need_byteswap(ctx));
+ insn = translator_ldl_end(env, dcbase, pc, mo_endian);
ctx->base.pc_next = pc += 4;
if (!is_prefix_insn(ctx, insn)) {
@@ -6620,8 +6615,7 @@ static void ppc_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs)
gen_exception_err(ctx, POWERPC_EXCP_ALIGN, POWERPC_EXCP_ALIGN_INSN);
ok = true;
} else {
- uint32_t insn2 = translator_ldl_swap(env, dcbase, pc,
- need_byteswap(ctx));
+ uint32_t insn2 = translator_ldl_end(env, dcbase, pc, mo_endian);
ctx->base.pc_next = pc += 4;
ok = decode_insn64(ctx, deposit64(insn2, 32, 32, insn));
}