|
@@ -28,7 +28,7 @@
|
|
|
* Most of this code is taken from 74xx_7xx/cache.S
|
|
|
* and then cleaned up a bit
|
|
|
*/
|
|
|
-
|
|
|
+
|
|
|
/*
|
|
|
* Invalidate L1 instruction cache.
|
|
|
*/
|
|
@@ -316,24 +316,30 @@ _GLOBAL(dcache_status)
|
|
|
blr
|
|
|
|
|
|
/*
|
|
|
- * Invalidate L2 cache using L2I and polling L2IP
|
|
|
+ * Invalidate L2 cache using L2I, assume L2 is enabled
|
|
|
*/
|
|
|
_GLOBAL(l2cache_invalidate)
|
|
|
- sync
|
|
|
- oris r3, r3, L2CR_L2I@h
|
|
|
+ mfspr r3, l2cr
|
|
|
+ rlwinm. r3, r3, 0, 0, 0
|
|
|
+ beq 1f
|
|
|
+
|
|
|
+ mfspr r3, l2cr
|
|
|
+ rlwinm r3, r3, 0, 1, 31
|
|
|
+
|
|
|
+#ifdef CONFIG_ALTIVEC
|
|
|
+ dssall
|
|
|
+#endif
|
|
|
sync
|
|
|
mtspr l2cr, r3
|
|
|
sync
|
|
|
+1: mfspr r3, l2cr
|
|
|
+ oris r3, r3, L2CR_L2I@h
|
|
|
+ mtspr l2cr, r3
|
|
|
+
|
|
|
invl2:
|
|
|
mfspr r3, l2cr
|
|
|
- andi. r3, r3, L2CR_L2IP
|
|
|
+ andi. r3, r3, L2CR_L2I@h
|
|
|
bne invl2
|
|
|
- /* turn off the global invalidate bit */
|
|
|
- mfspr r3, l2cr
|
|
|
- rlwinm r3, r3, 0, 11, 9
|
|
|
- sync
|
|
|
- mtspr l2cr, r3
|
|
|
- sync
|
|
|
blr
|
|
|
|
|
|
/*
|