ppc4xx: Flush complete dcache in relocate_code()
authorStefan Roese <sr@denx.de>
Fri, 26 Nov 2010 14:45:34 +0000 (15:45 +0100)
committerStefan Roese <sr@denx.de>
Sun, 28 Nov 2010 10:07:37 +0000 (11:07 +0100)
When the cache is enabled in SDRAM we need to flush not only the global
data area but also the bd_info struct in relocate_code. This patch now
flushed the complete dcache (all dcache lines) via flush_dcache() instead
of adding a flush_dcache_range() call for bd_info since this is faster.

Signed-off-by: Stefan Roese <sr@denx.de>
arch/powerpc/cpu/ppc4xx/start.S

index 65195f528a8d7c884f2531cef1760d14e5062e0c..0e75794d225887b3068b3313745d08f3245643e4 100644 (file)
@@ -1389,8 +1389,8 @@ in32r:
 relocate_code:
 #if defined(CONFIG_4xx_DCACHE) || defined(CONFIG_SYS_INIT_DCACHE_CS)
        /*
-        * We need to flush the initial global data (gd_t) before the dcache
-        * will be invalidated.
+        * We need to flush the initial global data (gd_t) and bd_info
+        * before the dcache will be invalidated.
         */
 
        /* Save registers */
@@ -1398,10 +1398,11 @@ relocate_code:
        mr      r10, r4
        mr      r11, r5
 
-       /* Flush initial global data range */
-       mr      r3, r4
-       addi    r4, r4, GENERATED_GBL_DATA_SIZE@l
-       bl      flush_dcache_range
+       /*
+        * Flush complete dcache, this is faster than flushing the
+        * ranges for global_data and bd_info instead.
+        */
+       bl      flush_dcache
 
 #if defined(CONFIG_SYS_INIT_DCACHE_CS)
        /*