qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-ppc] [PATCH] linux-user: ppc64: set MSR_CM bit for BookE 2.06


From: Alexander Graf
Subject: Re: [Qemu-ppc] [PATCH] linux-user: ppc64: set MSR_CM bit for BookE 2.06 MMU
Date: Fri, 22 Jul 2016 17:57:04 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0

On 07/22/2016 05:18 PM, Michael Walle wrote:
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 <address@hidden>

Yup, I guess that's about as smart as we have to be :).


Reviewed-by: Alexander Graf <address@hidden>


Alex

---

This is a kind of a v2 patch. The did the fix in the wrong place:
   http://lists.nongnu.org/archive/html/qemu-devel/2016-07/msg05409.html

  linux-user/main.c | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/linux-user/main.c b/linux-user/main.c
index 462e820..bac2cb0 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -4626,10 +4626,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;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]