Patchwork [RFC] target-ppc: fix RFI by clearing TGPR and ILE

login
register
mail settings
Submitter Thomas Monjalon
Date April 23, 2010, 4:09 p.m.
Message ID <1272038971-7088-1-git-send-email-thomas_ml@monjalon.net>
Download mbox | patch
Permalink /patch/50847/
State New
Headers show

Comments

Thomas Monjalon - April 23, 2010, 4:09 p.m.
From: Thomas Monjalon <thomas@monjalon.net>

Since commit 2ada0ed, the PPC processors which have TGPR support
should be broken because the bit TGPR was not cleared.

After testing with e300, it seems that ILE should be cleared also.

Feedbacks welcomed, thanks.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 target-ppc/op_helper.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

Patch

diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c
index 8f2ee98..22d7530 100644
--- a/target-ppc/op_helper.c
+++ b/target-ppc/op_helper.c
@@ -1645,8 +1645,10 @@  static inline void do_rfi(target_ulong nip, target_ulong msr,
 
 void helper_rfi (void)
 {
-    do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1],
-           ~((target_ulong)0x0), 1);
+    target_ulong msrm = 1 << MSR_ILE;
+    if (env->flags & POWERPC_FLAG_TGPR)
+       msrm |= 1 << MSR_TGPR;
+    do_rfi(env->spr[SPR_SRR0], env->spr[SPR_SRR1], ~((target_ulong)msrm), 1);
 }
 
 #if defined(TARGET_PPC64)