m68knommu: reorganize the no-MMU cache flushing to match m68k
authorGreg Ungerer <gerg@uclinux.org>
Wed, 2 May 2012 07:02:21 +0000 (17:02 +1000)
committerGreg Ungerer <gerg@uclinux.org>
Sun, 20 May 2012 11:22:08 +0000 (21:22 +1000)
Introduce cache_push() and cache_clear() functions for the non-MMU m68k
devices. With these in place we can more easily merge some of the common
m68k arch code.

In particular by reorganizing the __flush_cache_all() code and separating
the cache push and clear functions it becomes trivial to implement the
new cache_push() and cache_clear() functions.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
arch/m68k/include/asm/cacheflush_no.h

index cb88aa9..7cafb53 100644 (file)
 
 void mcf_cache_push(void);
 
-static inline void __flush_cache_all(void)
+static inline void __clear_cache_all(void)
 {
-#ifdef CACHE_PUSH
-       mcf_cache_push();
-#endif
 #ifdef CACHE_INVALIDATE
        __asm__ __volatile__ (
                "movel  %0, %%d0\n\t"
@@ -44,6 +41,14 @@ static inline void __flush_cache_all(void)
 #endif
 }
 
+static inline void __flush_cache_all(void)
+{
+#ifdef CACHE_PUSH
+       mcf_cache_push();
+#endif
+       __clear_cache_all();
+}
+
 /*
  * Some ColdFire parts implement separate instruction and data caches,
  * on those we should just flush the appropriate cache. If we don't need
@@ -76,4 +81,23 @@ static inline void __flush_dcache_all(void)
        __asm__ __volatile__ ( "nop" );
 #endif
 }
+
+/*
+ * Push cache entries at supplied address. We want to write back any dirty
+ * data and the invalidate the cache lines associated with this address.
+ */
+static inline void cache_push(unsigned long paddr, int len)
+{
+       __flush_cache_all();
+}
+
+/*
+ * Clear cache entries at supplied address (that is don't write back any
+ * dirty data).
+ */
+static inline void cache_clear(unsigned long paddr, int len)
+{
+       __clear_cache_all();
+}
+
 #endif /* _M68KNOMMU_CACHEFLUSH_H */