cpu_loop_exit_noexc(cs);
}
-/* Return true iff byteswap is needed to load instruction */
-static inline bool insn_need_byteswap(CPUArchState *env)
-{
- /* SYSTEM builds TARGET_BIG_ENDIAN. Need to swap when MSR[LE] is set */
- return !!(env->msr & ((target_ulong)1 << MSR_LE));
-}
-
uint32_t ppc_ldl_code(CPUArchState *env, target_ulong addr)
{
- uint32_t insn = cpu_ldl_code(env, addr);
-
- if (insn_need_byteswap(env)) {
- insn = bswap32(insn);
- }
+ CPUState *cs = env_cpu(env);
+ MemOp op_end = ppc_data_endian_env(env);
+ MemOpIdx oi = make_memop_idx(MO_UL | op_end, cpu_mmu_index(cs, true));
- return insn;
+ return cpu_ldl_code_mmu(env, addr, oi, 0);
}
#if defined(TARGET_PPC64)