ARM (ARM926ejs): add data cache support, tested on magnesium and tx25 board
authorHeiko Schocher <hs@denx.de>
Fri, 17 Sep 2010 11:10:30 +0000 (13:10 +0200)
committerWolfgang Denk <wd@denx.de>
Sun, 19 Sep 2010 17:29:51 +0000 (19:29 +0200)
Enable "cache" command on tx25 and magnesium board and test performance.

    Test 1: Loading 127 MB of data from NAND flash into RAM:

    Instr. Cache        off     on      on
      Data Cache        off     off     on
    --------------------------------------------------
    magnesium           32,6s   22,5s   30s     = x 1,09
    tx25 (29MB only)    9,69s   5,05s   8,16s   = x 1,19

    Test 2: uncompressing a gzipped image from RAM to RAM
            (size compressed: 6.5 MiB, uncompressed: 35 MiB):

    Instr. Cache        off     on      on
      Data Cache        off     off     on
    --------------------------------------------------
    magnesium           4,25s   2,08s   1,72s   = x 2,47
    tx25                4,82s   2,04s   1,84s   = x 2,62

Portions of this work were supported by funding from
the CE Linux Forum.

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
Signed-off-by: Heiko Schocher <hs@denx.de>
Cc: Alessandro Rubini <rubini@gnudd.com>
arch/arm/lib/cache.c
include/configs/imx27lite-common.h
include/configs/tx25.h

index 61ee9d3b13b96bfc5b8387a78de4edf990a5b166..b36fd24407696a76b42ff17d5903f37df20a89de 100644 (file)
@@ -31,6 +31,12 @@ void  flush_cache (unsigned long dummy1, unsigned long dummy2)
        void arm1136_cache_flush(void);
 
        arm1136_cache_flush();
+#endif
+#ifdef CONFIG_ARM926EJS
+       /* test and clean, page 2-23 of arm926ejs manual */
+       asm("0: mrc p15, 0, r15, c7, c10, 3\n\t" "bne 0b\n" : : : "memory");
+       /* disable write buffer as well (page 2-22) */
+       asm("mcr p15, 0, %0, c7, c10, 4" : : "r" (0));
 #endif
        return;
 }
index 1da860261a23b97fbd3b55f7656a0e7c2a52895b..33550ba66147f25c19ca1797c90224046b65c975 100644 (file)
  */
 #include <config_cmd_default.h>
 #define CONFIG_CMD_ASKENV
+#define CONFIG_CMD_CACHE
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_DIAG
 #define CONFIG_CMD_FAT
index c8188ca525b41eb55a1ce12c4251040118a3f8f4..013aa3541c842b231df967e51b16fdf1fd6acb18 100644 (file)
 /* U-Boot commands */
 #include <config_cmd_default.h>
 #define CONFIG_CMD_NAND
+#define CONFIG_CMD_CACHE
 
 /*
  * Ethernet