|
@@ -25,11 +25,19 @@
|
|
|
#define SL_IBAT2 0x48
|
|
#define SL_IBAT2 0x48
|
|
|
#define SL_DBAT3 0x50
|
|
#define SL_DBAT3 0x50
|
|
|
#define SL_IBAT3 0x58
|
|
#define SL_IBAT3 0x58
|
|
|
-#define SL_TB 0x60
|
|
|
|
|
-#define SL_R2 0x68
|
|
|
|
|
-#define SL_CR 0x6c
|
|
|
|
|
-#define SL_LR 0x70
|
|
|
|
|
-#define SL_R12 0x74 /* r12 to r31 */
|
|
|
|
|
|
|
+#define SL_DBAT4 0x60
|
|
|
|
|
+#define SL_IBAT4 0x68
|
|
|
|
|
+#define SL_DBAT5 0x70
|
|
|
|
|
+#define SL_IBAT5 0x78
|
|
|
|
|
+#define SL_DBAT6 0x80
|
|
|
|
|
+#define SL_IBAT6 0x88
|
|
|
|
|
+#define SL_DBAT7 0x90
|
|
|
|
|
+#define SL_IBAT7 0x98
|
|
|
|
|
+#define SL_TB 0xa0
|
|
|
|
|
+#define SL_R2 0xa8
|
|
|
|
|
+#define SL_CR 0xac
|
|
|
|
|
+#define SL_LR 0xb0
|
|
|
|
|
+#define SL_R12 0xb4 /* r12 to r31 */
|
|
|
#define SL_SIZE (SL_R12 + 80)
|
|
#define SL_SIZE (SL_R12 + 80)
|
|
|
|
|
|
|
|
.section .data
|
|
.section .data
|
|
@@ -114,6 +122,41 @@ _GLOBAL(swsusp_arch_suspend)
|
|
|
mfibatl r4,3
|
|
mfibatl r4,3
|
|
|
stw r4,SL_IBAT3+4(r11)
|
|
stw r4,SL_IBAT3+4(r11)
|
|
|
|
|
|
|
|
|
|
+BEGIN_MMU_FTR_SECTION
|
|
|
|
|
+ mfspr r4,SPRN_DBAT4U
|
|
|
|
|
+ stw r4,SL_DBAT4(r11)
|
|
|
|
|
+ mfspr r4,SPRN_DBAT4L
|
|
|
|
|
+ stw r4,SL_DBAT4+4(r11)
|
|
|
|
|
+ mfspr r4,SPRN_DBAT5U
|
|
|
|
|
+ stw r4,SL_DBAT5(r11)
|
|
|
|
|
+ mfspr r4,SPRN_DBAT5L
|
|
|
|
|
+ stw r4,SL_DBAT5+4(r11)
|
|
|
|
|
+ mfspr r4,SPRN_DBAT6U
|
|
|
|
|
+ stw r4,SL_DBAT6(r11)
|
|
|
|
|
+ mfspr r4,SPRN_DBAT6L
|
|
|
|
|
+ stw r4,SL_DBAT6+4(r11)
|
|
|
|
|
+ mfspr r4,SPRN_DBAT7U
|
|
|
|
|
+ stw r4,SL_DBAT7(r11)
|
|
|
|
|
+ mfspr r4,SPRN_DBAT7L
|
|
|
|
|
+ stw r4,SL_DBAT7+4(r11)
|
|
|
|
|
+ mfspr r4,SPRN_IBAT4U
|
|
|
|
|
+ stw r4,SL_IBAT4(r11)
|
|
|
|
|
+ mfspr r4,SPRN_IBAT4L
|
|
|
|
|
+ stw r4,SL_IBAT4+4(r11)
|
|
|
|
|
+ mfspr r4,SPRN_IBAT5U
|
|
|
|
|
+ stw r4,SL_IBAT5(r11)
|
|
|
|
|
+ mfspr r4,SPRN_IBAT5L
|
|
|
|
|
+ stw r4,SL_IBAT5+4(r11)
|
|
|
|
|
+ mfspr r4,SPRN_IBAT6U
|
|
|
|
|
+ stw r4,SL_IBAT6(r11)
|
|
|
|
|
+ mfspr r4,SPRN_IBAT6L
|
|
|
|
|
+ stw r4,SL_IBAT6+4(r11)
|
|
|
|
|
+ mfspr r4,SPRN_IBAT7U
|
|
|
|
|
+ stw r4,SL_IBAT7(r11)
|
|
|
|
|
+ mfspr r4,SPRN_IBAT7L
|
|
|
|
|
+ stw r4,SL_IBAT7+4(r11)
|
|
|
|
|
+END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS)
|
|
|
|
|
+
|
|
|
#if 0
|
|
#if 0
|
|
|
/* Backup various CPU config stuffs */
|
|
/* Backup various CPU config stuffs */
|
|
|
bl __save_cpu_setup
|
|
bl __save_cpu_setup
|
|
@@ -279,27 +322,41 @@ END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
|
|
|
mtibatu 3,r4
|
|
mtibatu 3,r4
|
|
|
lwz r4,SL_IBAT3+4(r11)
|
|
lwz r4,SL_IBAT3+4(r11)
|
|
|
mtibatl 3,r4
|
|
mtibatl 3,r4
|
|
|
-#endif
|
|
|
|
|
-
|
|
|
|
|
BEGIN_MMU_FTR_SECTION
|
|
BEGIN_MMU_FTR_SECTION
|
|
|
- li r4,0
|
|
|
|
|
|
|
+ lwz r4,SL_DBAT4(r11)
|
|
|
mtspr SPRN_DBAT4U,r4
|
|
mtspr SPRN_DBAT4U,r4
|
|
|
|
|
+ lwz r4,SL_DBAT4+4(r11)
|
|
|
mtspr SPRN_DBAT4L,r4
|
|
mtspr SPRN_DBAT4L,r4
|
|
|
|
|
+ lwz r4,SL_DBAT5(r11)
|
|
|
mtspr SPRN_DBAT5U,r4
|
|
mtspr SPRN_DBAT5U,r4
|
|
|
|
|
+ lwz r4,SL_DBAT5+4(r11)
|
|
|
mtspr SPRN_DBAT5L,r4
|
|
mtspr SPRN_DBAT5L,r4
|
|
|
|
|
+ lwz r4,SL_DBAT6(r11)
|
|
|
mtspr SPRN_DBAT6U,r4
|
|
mtspr SPRN_DBAT6U,r4
|
|
|
|
|
+ lwz r4,SL_DBAT6+4(r11)
|
|
|
mtspr SPRN_DBAT6L,r4
|
|
mtspr SPRN_DBAT6L,r4
|
|
|
|
|
+ lwz r4,SL_DBAT7(r11)
|
|
|
mtspr SPRN_DBAT7U,r4
|
|
mtspr SPRN_DBAT7U,r4
|
|
|
|
|
+ lwz r4,SL_DBAT7+4(r11)
|
|
|
mtspr SPRN_DBAT7L,r4
|
|
mtspr SPRN_DBAT7L,r4
|
|
|
|
|
+ lwz r4,SL_IBAT4(r11)
|
|
|
mtspr SPRN_IBAT4U,r4
|
|
mtspr SPRN_IBAT4U,r4
|
|
|
|
|
+ lwz r4,SL_IBAT4+4(r11)
|
|
|
mtspr SPRN_IBAT4L,r4
|
|
mtspr SPRN_IBAT4L,r4
|
|
|
|
|
+ lwz r4,SL_IBAT5(r11)
|
|
|
mtspr SPRN_IBAT5U,r4
|
|
mtspr SPRN_IBAT5U,r4
|
|
|
|
|
+ lwz r4,SL_IBAT5+4(r11)
|
|
|
mtspr SPRN_IBAT5L,r4
|
|
mtspr SPRN_IBAT5L,r4
|
|
|
|
|
+ lwz r4,SL_IBAT6(r11)
|
|
|
mtspr SPRN_IBAT6U,r4
|
|
mtspr SPRN_IBAT6U,r4
|
|
|
|
|
+ lwz r4,SL_IBAT6+4(r11)
|
|
|
mtspr SPRN_IBAT6L,r4
|
|
mtspr SPRN_IBAT6L,r4
|
|
|
|
|
+ lwz r4,SL_IBAT7(r11)
|
|
|
mtspr SPRN_IBAT7U,r4
|
|
mtspr SPRN_IBAT7U,r4
|
|
|
|
|
+ lwz r4,SL_IBAT7+4(r11)
|
|
|
mtspr SPRN_IBAT7L,r4
|
|
mtspr SPRN_IBAT7L,r4
|
|
|
END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS)
|
|
END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS)
|
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
/* Flush all TLBs */
|
|
/* Flush all TLBs */
|
|
|
lis r4,0x1000
|
|
lis r4,0x1000
|