0001
0002 #ifndef _SPARC_CACHEFLUSH_H
0003 #define _SPARC_CACHEFLUSH_H
0004
0005 #include <asm/cachetlb_32.h>
0006
0007 #define flush_cache_all() \
0008 sparc32_cachetlb_ops->cache_all()
0009 #define flush_cache_mm(mm) \
0010 sparc32_cachetlb_ops->cache_mm(mm)
0011 #define flush_cache_dup_mm(mm) \
0012 sparc32_cachetlb_ops->cache_mm(mm)
0013 #define flush_cache_range(vma,start,end) \
0014 sparc32_cachetlb_ops->cache_range(vma, start, end)
0015 #define flush_cache_page(vma,addr,pfn) \
0016 sparc32_cachetlb_ops->cache_page(vma, addr)
0017 #define flush_icache_range(start, end) do { } while (0)
0018 #define flush_icache_page(vma, pg) do { } while (0)
0019
0020 #define copy_to_user_page(vma, page, vaddr, dst, src, len) \
0021 do { \
0022 flush_cache_page(vma, vaddr, page_to_pfn(page));\
0023 memcpy(dst, src, len); \
0024 } while (0)
0025 #define copy_from_user_page(vma, page, vaddr, dst, src, len) \
0026 do { \
0027 flush_cache_page(vma, vaddr, page_to_pfn(page));\
0028 memcpy(dst, src, len); \
0029 } while (0)
0030
0031 #define __flush_page_to_ram(addr) \
0032 sparc32_cachetlb_ops->page_to_ram(addr)
0033 #define flush_sig_insns(mm,insn_addr) \
0034 sparc32_cachetlb_ops->sig_insns(mm, insn_addr)
0035 #define flush_page_for_dma(addr) \
0036 sparc32_cachetlb_ops->page_for_dma(addr)
0037
0038 struct page;
0039 void sparc_flush_page_to_ram(struct page *page);
0040
0041 #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 1
0042 #define flush_dcache_page(page) sparc_flush_page_to_ram(page)
0043 #define flush_dcache_mmap_lock(mapping) do { } while (0)
0044 #define flush_dcache_mmap_unlock(mapping) do { } while (0)
0045
0046 #define flush_cache_vmap(start, end) flush_cache_all()
0047 #define flush_cache_vunmap(start, end) flush_cache_all()
0048
0049
0050
0051
0052
0053
0054 void flush_user_windows(void);
0055 void kill_user_windows(void);
0056 void flushw_all(void);
0057
0058 #endif