[U-Boot] [PATCH 1/3] ARM: Clean arch/arm/lib/cache.c

Hong Xu
2011-08-11T02:19:44Z

The default cache operations defined in arch/arm/lib/cache.c
do not perform any real cache operation, and instead a WARNING
will be emitted.

Signed-off-by: Hong Xu <hong.xu@atmel.com>
Tested-by: Elen Song <elen.song@atmel.com>
CC: Albert Aribaud <albert.u.boot@aribaud.net>
---
arch/arm/lib/cache.c | 55 ++++++++++++++++++++++++++++---------------------
1 files changed, 31 insertions(+), 24 deletions(-)

diff --git a/arch/arm/lib/cache.c b/arch/arm/lib/cache.c
index 92b61a2..6af05ec 100644
--- a/arch/arm/lib/cache.c
+++ b/arch/arm/lib/cache.c
@@ -20,36 +20,43 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
+#include <linux/compiler.h>
+#include <common.h>

-/* for now: just dummy functions to satisfy the linker */
+#define EMIT_WARNING printf("WARNING: %s - CPU cache operation is not " \
+"implemented!\n", __func__)

-#include <common.h>
+/*
+ * Default implementations
+ *
+ * Warn user if CPU code does not implement necessary cache functions
+ */
+void __weak flush_cache(unsigned long start, unsigned long size)
+{
+ EMIT_WARNING;
+}

-void __flush_cache(unsigned long start, unsigned long size)
+void __weak flush_dcache_all(void)
{
-#if defined(CONFIG_OMAP2420) || defined(CONFIG_ARM1136)
- void arm1136_cache_flush(void);
+ EMIT_WARNING;
+}

- 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;
+void __weak flush_dcache_range(unsigned long start, unsigned long stop)
+{
+ EMIT_WARNING;
}
-void flush_cache(unsigned long start, unsigned long size)
- __attribute__((weak, alias("__flush_cache")));

-/*
- * Default implementation:
- * do a range flush for the entire range
- */
-void __flush_dcache_all(void)
+void __weak invalidate_dcache_range(unsigned long start, unsigned long stop)
+{
+ EMIT_WARNING;
+}
+
+void __weak invalidate_dcache_all(void)
+{
+ EMIT_WARNING;
+}
+
+void __weak invalidate_icache_all(void)
{
- flush_cache(0, ~0);
+ EMIT_WARNING;
}
-void flush_dcache_all(void)
- __attribute__((weak, alias("__flush_dcache_all")));
--
1.7.6