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>
This commit is contained in:
Родитель
453549d2e5
Коммит
1744bd921c
|
@ -30,11 +30,8 @@
|
|||
|
||||
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 */
|
||||
|
|
Загрузка…
Ссылка в новой задаче