|
@@ -17,6 +17,7 @@
|
|
|
#include <asm/ppc-opcode.h>
|
|
|
#include <asm/hw_irq.h>
|
|
|
#include <asm/kvm_book3s_asm.h>
|
|
|
+#include <asm/opal.h>
|
|
|
|
|
|
#undef DEBUG
|
|
|
|
|
@@ -125,6 +126,32 @@ _GLOBAL(power7_sleep)
|
|
|
b power7_powersave_common
|
|
|
/* No return */
|
|
|
|
|
|
+_GLOBAL(power7_wakeup_tb_loss)
|
|
|
+ ld r2,PACATOC(r13);
|
|
|
+ ld r1,PACAR1(r13)
|
|
|
+
|
|
|
+ /* Time base re-sync */
|
|
|
+ li r0,OPAL_RESYNC_TIMEBASE
|
|
|
+ LOAD_REG_ADDR(r11,opal);
|
|
|
+ ld r12,8(r11);
|
|
|
+ ld r2,0(r11);
|
|
|
+ mtctr r12
|
|
|
+ bctrl
|
|
|
+
|
|
|
+ /* TODO: Check r3 for failure */
|
|
|
+
|
|
|
+ REST_NVGPRS(r1)
|
|
|
+ REST_GPR(2, r1)
|
|
|
+ ld r3,_CCR(r1)
|
|
|
+ ld r4,_MSR(r1)
|
|
|
+ ld r5,_NIP(r1)
|
|
|
+ addi r1,r1,INT_FRAME_SIZE
|
|
|
+ mtcr r3
|
|
|
+ mfspr r3,SPRN_SRR1 /* Return SRR1 */
|
|
|
+ mtspr SPRN_SRR1,r4
|
|
|
+ mtspr SPRN_SRR0,r5
|
|
|
+ rfid
|
|
|
+
|
|
|
_GLOBAL(power7_wakeup_loss)
|
|
|
ld r1,PACAR1(r13)
|
|
|
REST_NVGPRS(r1)
|