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

Submitted by Thomas Monjalon on April 23, 2010, 4:09 p.m.

Details

Message ID 1272038971-7088-1-git-send-email-thomas_ml@monjalon.net
State New
Headers show

Commit Message

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 hide | download patch | download mbox

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)