]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
linux-user: ppc64: set MSR_CM bit for BookE 2.06 MMU
authorMichael Walle <michael@walle.cc>
Fri, 22 Jul 2016 15:18:05 +0000 (17:18 +0200)
committerRiku Voipio <riku.voipio@linaro.org>
Wed, 21 Sep 2016 18:42:11 +0000 (21:42 +0300)
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: Michael Walle <michael@walle.cc>
Reviewed-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
linux-user/main.c

index 3ad70f8a6ee6222c7d542108e923a257027bcdb9..2aeda8a10dc37ec7644433875cc9287520160ac3 100644 (file)
@@ -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;