From: Philippe Mathieu-Daudé Date: Mon, 2 Feb 2026 20:41:45 +0000 (+0100) Subject: target/ppc: Inline need_byteswap() and replace translator_ldl_swap() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3531dc3dd99a923de784b033c073670eb056f39e;p=thirdparty%2Fqemu.git 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é Reviewed-by: Anton Johansson 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)); }