]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
ppc4xx: Enable CPU POST test for 4xx with dcache enabled
authorStefan Roese <sr@denx.de>
Wed, 31 Oct 2007 19:51:10 +0000 (20:51 +0100)
committerStefan Roese <sr@denx.de>
Wed, 31 Oct 2007 20:21:47 +0000 (21:21 +0100)
Now with caches enabled (i- and d-cache) on 44x, we need a chance to
disable the cache for the CPU POST tests, since these tests consist
of self modifying code. This is done via the new change_tlb() function.

Signed-off-by: Stefan Roese <sr@denx.de>
post/lib_ppc/cpu.c

index 1f2ded2bf2642db034b0c3bc5b7057588eb80203..4ab6d2dc00288f11f2d539c8c40de79c4ac70bd6 100644 (file)
@@ -36,6 +36,7 @@
 
 #include <watchdog.h>
 #include <post.h>
+#include <asm/mmu.h>
 
 #if CONFIG_POST & CFG_POST_CPU
 
@@ -59,6 +60,8 @@ extern int cpu_post_test_multi (void);
 extern int cpu_post_test_string (void);
 extern int cpu_post_test_complex (void);
 
+DECLARE_GLOBAL_DATA_PTR;
+
 ulong cpu_post_makecr (long v)
 {
        ulong cr = 0;
@@ -81,6 +84,10 @@ int cpu_post_test (int flags)
        WATCHDOG_RESET();
        if (ic)
                icache_disable ();
+#ifdef CONFIG_4xx_DCACHE
+       /* disable cache */
+       change_tlb(gd->bd->bi_memstart, gd->bd->bi_memsize, TLB_WORD2_I_ENABLE);
+#endif
 
        if (ret == 0)
                ret = cpu_post_test_cmp ();
@@ -129,6 +136,10 @@ int cpu_post_test (int flags)
 
        if (ic)
                icache_enable ();
+#ifdef CONFIG_4xx_DCACHE
+       /* enable cache */
+       change_tlb(gd->bd->bi_memstart, gd->bd->bi_memsize, 0);
+#endif
 
        WATCHDOG_RESET();