home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-m68knommu / cacheflush.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.2 KB  |  77 lines

  1. #ifndef _M68KNOMMU_CACHEFLUSH_H
  2. #define _M68KNOMMU_CACHEFLUSH_H
  3.  
  4. /*
  5.  * (C) Copyright 2000-2004, 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)    __flush_cache_all()
  12. #define flush_cache_page(vma, vmaddr)        do { } while (0)
  13. #define flush_dcache_range(start,len)        __flush_cache_all()
  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)        do { } while (0)
  21. #define flush_cache_vunmap(start, end)        do { } while (0)
  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.  
  28. static 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. #if defined(CONFIG_M527x) || defined(CONFIG_M528x)
  54.     __asm__ __volatile__ (
  55.             "movel    #0x81400100, %%d0\n\t"
  56.             "movec    %%d0, %%CACR\n\t"
  57.         "nop\n\t"
  58.         : : : "d0" );
  59. #endif /* CONFIG_M527x || CONFIG_M528x */
  60. #ifdef CONFIG_M5272
  61.     __asm__ __volatile__ (
  62.             "movel    #0x01000000, %%d0\n\t"
  63.             "movec    %%d0, %%CACR\n\t"
  64.         "nop\n\t"
  65.         : : : "d0" );
  66. #endif /* CONFIG_M5272 */
  67. #ifdef CONFIG_M5249
  68.     __asm__ __volatile__ (
  69.             "movel    #0xa1000200, %%d0\n\t"
  70.             "movec    %%d0, %%CACR\n\t"
  71.         "nop\n\t"
  72.         : : : "d0" );
  73. #endif /* CONFIG_M5249 */
  74. }
  75.  
  76. #endif /* _M68KNOMMU_CACHEFLUSH_H */
  77.