Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus
[pandora-kernel.git] / arch / powerpc / kernel / idle_e500.S
index 47a1a98..3e2b95c 100644 (file)
@@ -26,6 +26,17 @@ _GLOBAL(e500_idle)
        ori     r4,r4,_TLF_NAPPING      /* so when we take an exception */
        stw     r4,TI_LOCAL_FLAGS(r3)   /* it will return to our caller */
 
+#ifdef CONFIG_E500MC
+       wrteei  1
+1:     wait
+
+       /*
+        * Guard against spurious wakeups (e.g. from a hypervisor) --
+        * any real interrupt will cause us to return to LR due to
+        * _TLF_NAPPING.
+        */
+       b       1b
+#else
        /* Check if we can nap or doze, put HID0 mask in r3 */
        lis     r3,0
 BEGIN_FTR_SECTION
@@ -72,6 +83,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_L2CSR|CPU_FTR_CAN_NAP)
        mtmsr   r7
        isync
 2:     b       2b
+#endif /* !E500MC */
 
 /*
  * Return from NAP/DOZE mode, restore some CPU specific registers,