linux/arch/score/include/asm/cacheflush.h
<<
>>
Prefs
   1#ifndef _ASM_SCORE_CACHEFLUSH_H
   2#define _ASM_SCORE_CACHEFLUSH_H
   3
   4/* Keep includes the same across arches. */
   5#include <linux/mm.h>
   6
   7extern void flush_cache_all(void);
   8extern void flush_cache_mm(struct mm_struct *mm);
   9extern void flush_cache_range(struct vm_area_struct *vma,
  10                                unsigned long start, unsigned long end);
  11extern void flush_cache_page(struct vm_area_struct *vma,
  12                                unsigned long page, unsigned long pfn);
  13extern void flush_cache_sigtramp(unsigned long addr);
  14extern void flush_icache_all(void);
  15extern void flush_icache_range(unsigned long start, unsigned long end);
  16extern void flush_dcache_range(unsigned long start, unsigned long end);
  17extern void flush_dcache_page(struct page *page);
  18
  19#define PG_dcache_dirty         PG_arch_1
  20
  21#define flush_cache_dup_mm(mm)                  do {} while (0)
  22#define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 0
  23#define flush_dcache_mmap_lock(mapping)         do {} while (0)
  24#define flush_dcache_mmap_unlock(mapping)       do {} while (0)
  25#define flush_cache_vmap(start, end)            do {} while (0)
  26#define flush_cache_vunmap(start, end)          do {} while (0)
  27
  28static inline void flush_icache_page(struct vm_area_struct *vma,
  29        struct page *page)
  30{
  31        if (vma->vm_flags & VM_EXEC) {
  32                void *v = page_address(page);
  33                flush_icache_range((unsigned long) v,
  34                                (unsigned long) v + PAGE_SIZE);
  35        }
  36}
  37
  38#define copy_from_user_page(vma, page, vaddr, dst, src, len) \
  39        memcpy(dst, src, len)
  40
  41#define copy_to_user_page(vma, page, vaddr, dst, src, len)      \
  42        do {                                                    \
  43                memcpy(dst, src, len);                          \
  44                if ((vma->vm_flags & VM_EXEC))                  \
  45                        flush_cache_page(vma, vaddr, page_to_pfn(page));\
  46        } while (0)
  47
  48#endif /* _ASM_SCORE_CACHEFLUSH_H */
  49