summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--target-ppc/helper.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/target-ppc/helper.c b/target-ppc/helper.c
index e3700b5f2c..84e6c39357 100644
--- a/target-ppc/helper.c
+++ b/target-ppc/helper.c
@@ -1493,10 +1493,12 @@ void do_store_msr (CPUPPCState *env, target_ulong value)
         break;
     }
     if (enter_pm) {
-        /* power save: exit cpu loop */
-        env->halted = 1;
-        env->exception_index = EXCP_HLT;
-        cpu_loop_exit();
+        if (likely(!env->halted)) {
+            /* power save: exit cpu loop */
+            env->halted = 1;
+            env->exception_index = EXCP_HLT;
+            cpu_loop_exit();
+        }
     }
 }