Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.13 75 lines 2.2 kB view raw
1#ifndef _M68KNOMMU_CACHEFLUSH_H 2#define _M68KNOMMU_CACHEFLUSH_H 3 4/* 5 * (C) Copyright 2000-2002, Greg Ungerer <gerg@snapgear.com> 6 */ 7#include <linux/mm.h> 8 9#define flush_cache_all() __flush_cache_all() 10#define flush_cache_mm(mm) do { } while (0) 11#define flush_cache_range(vma, start, end) do { } while (0) 12#define flush_cache_page(vma, vmaddr, pfn) do { } while (0) 13#define flush_dcache_range(start,len) do { } while (0) 14#define flush_dcache_page(page) do { } while (0) 15#define flush_dcache_mmap_lock(mapping) do { } while (0) 16#define flush_dcache_mmap_unlock(mapping) do { } while (0) 17#define flush_icache_range(start,len) __flush_cache_all() 18#define flush_icache_page(vma,pg) do { } while (0) 19#define flush_icache_user_range(vma,pg,adr,len) do { } while (0) 20#define flush_cache_vmap(start, end) flush_cache_all() 21#define flush_cache_vunmap(start, end) flush_cache_all() 22 23#define copy_to_user_page(vma, page, vaddr, dst, src, len) \ 24 memcpy(dst, src, len) 25#define copy_from_user_page(vma, page, vaddr, dst, src, len) \ 26 memcpy(dst, src, len) 27 28extern inline void __flush_cache_all(void) 29{ 30#ifdef CONFIG_M5407 31 /* 32 * Use cpushl to push and invalidate all cache lines. 33 * Gas doesn't seem to know how to generate the ColdFire 34 * cpushl instruction... Oh well, bit stuff it for now. 35 */ 36 __asm__ __volatile__ ( 37 "nop\n\t" 38 "clrl %%d0\n\t" 39 "1:\n\t" 40 "movel %%d0,%%a0\n\t" 41 "2:\n\t" 42 ".word 0xf468\n\t" 43 "addl #0x10,%%a0\n\t" 44 "cmpl #0x00000800,%%a0\n\t" 45 "blt 2b\n\t" 46 "addql #1,%%d0\n\t" 47 "cmpil #4,%%d0\n\t" 48 "bne 1b\n\t" 49 "movel #0xb6088500,%%d0\n\t" 50 "movec %%d0,%%CACR\n\t" 51 : : : "d0", "a0" ); 52#endif /* CONFIG_M5407 */ 53#ifdef CONFIG_M5272 54 __asm__ __volatile__ ( 55 "movel #0x01000000, %%d0\n\t" 56 "movec %%d0, %%CACR\n\t" 57 "nop\n\t" 58 "movel #0x80000100, %%d0\n\t" 59 "movec %%d0, %%CACR\n\t" 60 "nop\n\t" 61 : : : "d0" ); 62#endif /* CONFIG_M5272 */ 63#if 0 /* CONFIG_M5249 */ 64 __asm__ __volatile__ ( 65 "movel #0x01000000, %%d0\n\t" 66 "movec %%d0, %%CACR\n\t" 67 "nop\n\t" 68 "movel #0xa0000200, %%d0\n\t" 69 "movec %%d0, %%CACR\n\t" 70 "nop\n\t" 71 : : : "d0" ); 72#endif /* CONFIG_M5249 */ 73} 74 75#endif /* _M68KNOMMU_CACHEFLUSH_H */