aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/include/asm
diff options
context:
space:
mode:
authorGreg Ungerer <gerg@uclinux.org>2012-05-02 03:02:21 -0400
committerGreg Ungerer <gerg@uclinux.org>2012-05-20 07:22:08 -0400
commit1744bd921cd1037f0415574e0f8a3611984ecc7c (patch)
treea2607da59035bf3758e0e3c0c04cde6e1fd633ca /arch/m68k/include/asm
parent453549d2e511a8490e04f91b084aa418f9f4e5d2 (diff)
m68knommu: reorganize the no-MMU cache flushing to match m68k
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>
Diffstat (limited to 'arch/m68k/include/asm')
-rw-r--r--arch/m68k/include/asm/cacheflush_no.h32
1 files changed, 28 insertions, 4 deletions
diff --git a/arch/m68k/include/asm/cacheflush_no.h b/arch/m68k/include/asm/cacheflush_no.h
index cb88aa96c4f1..7cafb537d03c 100644
--- a/arch/m68k/include/asm/cacheflush_no.h
+++ b/arch/m68k/include/asm/cacheflush_no.h
@@ -30,11 +30,8 @@
30 30
31void mcf_cache_push(void); 31void mcf_cache_push(void);
32 32
33static inline void __flush_cache_all(void) 33static inline void __clear_cache_all(void)
34{ 34{
35#ifdef CACHE_PUSH
36 mcf_cache_push();
37#endif
38#ifdef CACHE_INVALIDATE 35#ifdef CACHE_INVALIDATE
39 __asm__ __volatile__ ( 36 __asm__ __volatile__ (
40 "movel %0, %%d0\n\t" 37 "movel %0, %%d0\n\t"
@@ -44,6 +41,14 @@ static inline void __flush_cache_all(void)
44#endif 41#endif
45} 42}
46 43
44static inline void __flush_cache_all(void)
45{
46#ifdef CACHE_PUSH
47 mcf_cache_push();
48#endif
49 __clear_cache_all();
50}
51
47/* 52/*
48 * Some ColdFire parts implement separate instruction and data caches, 53 * Some ColdFire parts implement separate instruction and data caches,
49 * on those we should just flush the appropriate cache. If we don't need 54 * 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)
76 __asm__ __volatile__ ( "nop" ); 81 __asm__ __volatile__ ( "nop" );
77#endif 82#endif
78} 83}
84
85/*
86 * Push cache entries at supplied address. We want to write back any dirty
87 * data and the invalidate the cache lines associated with this address.
88 */
89static inline void cache_push(unsigned long paddr, int len)
90{
91 __flush_cache_all();
92}
93
94/*
95 * Clear cache entries at supplied address (that is don't write back any
96 * dirty data).
97 */
98static inline void cache_clear(unsigned long paddr, int len)
99{
100 __clear_cache_all();
101}
102
79#endif /* _M68KNOMMU_CACHEFLUSH_H */ 103#endif /* _M68KNOMMU_CACHEFLUSH_H */