Commit c8361129 authored by Michael Walle's avatar Michael Walle Committed by Riku Voipio
Browse files

linux-user: ppc64: set MSR_CM bit for BookE 2.06 MMU



64 bit user mode doesn't work for the e5500 core because the MSR_CM bit is
not set which enables the 64 bit mode for this MMU model. Memory addresses
are truncated to 32 bit, which results in "Invalid data memory access"
error messages. Fix it by setting the MSR_CM bit for this MMU model.

Signed-off-by: default avatarMichael Walle <michael@walle.cc>
Reviewed-by: default avatarAlexander Graf <agraf@suse.de>
Signed-off-by: default avatarRiku Voipio <riku.voipio@linaro.org>
parent ee8e7614
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -4615,10 +4615,11 @@ int main(int argc, char **argv, char **envp)
        int i;

#if defined(TARGET_PPC64)
        int flag = (env->insns_flags2 & PPC2_BOOKE206) ? MSR_CM : MSR_SF;
#if defined(TARGET_ABI32)
        env->msr &= ~((target_ulong)1 << MSR_SF);
        env->msr &= ~((target_ulong)1 << flag);
#else
        env->msr |= (target_ulong)1 << MSR_SF;
        env->msr |= (target_ulong)1 << flag;
#endif
#endif
        env->nip = regs->nip;