summaryrefslogtreecommitdiff
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();
+ }
}
}