Blame view

include/asm-sparc/cacheflush.h 3.46 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
  #ifndef _SPARC_CACHEFLUSH_H
  #define _SPARC_CACHEFLUSH_H
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  #include <linux/mm.h>		/* Common for other includes */
  // #include <linux/kernel.h> from pgalloc.h
  // #include <linux/sched.h>  from pgalloc.h
  
  // #include <asm/page.h>
  #include <asm/btfixup.h>
  
  /*
   * Fine grained cache flushing.
   */
  #ifdef CONFIG_SMP
  
  BTFIXUPDEF_CALL(void, local_flush_cache_all, void)
  BTFIXUPDEF_CALL(void, local_flush_cache_mm, struct mm_struct *)
  BTFIXUPDEF_CALL(void, local_flush_cache_range, struct vm_area_struct *, unsigned long, unsigned long)
  BTFIXUPDEF_CALL(void, local_flush_cache_page, struct vm_area_struct *, unsigned long)
  
  #define local_flush_cache_all() BTFIXUP_CALL(local_flush_cache_all)()
  #define local_flush_cache_mm(mm) BTFIXUP_CALL(local_flush_cache_mm)(mm)
  #define local_flush_cache_range(vma,start,end) BTFIXUP_CALL(local_flush_cache_range)(vma,start,end)
  #define local_flush_cache_page(vma,addr) BTFIXUP_CALL(local_flush_cache_page)(vma,addr)
  
  BTFIXUPDEF_CALL(void, local_flush_page_to_ram, unsigned long)
  BTFIXUPDEF_CALL(void, local_flush_sig_insns, struct mm_struct *, unsigned long)
  
  #define local_flush_page_to_ram(addr) BTFIXUP_CALL(local_flush_page_to_ram)(addr)
  #define local_flush_sig_insns(mm,insn_addr) BTFIXUP_CALL(local_flush_sig_insns)(mm,insn_addr)
  
  extern void smp_flush_cache_all(void);
  extern void smp_flush_cache_mm(struct mm_struct *mm);
  extern void smp_flush_cache_range(struct vm_area_struct *vma,
  				  unsigned long start,
  				  unsigned long end);
  extern void smp_flush_cache_page(struct vm_area_struct *vma, unsigned long page);
  
  extern void smp_flush_page_to_ram(unsigned long page);
  extern void smp_flush_sig_insns(struct mm_struct *mm, unsigned long insn_addr);
  
  #endif /* CONFIG_SMP */
  
  BTFIXUPDEF_CALL(void, flush_cache_all, void)
  BTFIXUPDEF_CALL(void, flush_cache_mm, struct mm_struct *)
  BTFIXUPDEF_CALL(void, flush_cache_range, struct vm_area_struct *, unsigned long, unsigned long)
  BTFIXUPDEF_CALL(void, flush_cache_page, struct vm_area_struct *, unsigned long)
  
  #define flush_cache_all() BTFIXUP_CALL(flush_cache_all)()
  #define flush_cache_mm(mm) BTFIXUP_CALL(flush_cache_mm)(mm)
ec8c0446b   Ralf Baechle   [PATCH] Optimize ...
50
  #define flush_cache_dup_mm(mm) BTFIXUP_CALL(flush_cache_mm)(mm)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
  #define flush_cache_range(vma,start,end) BTFIXUP_CALL(flush_cache_range)(vma,start,end)
  #define flush_cache_page(vma,addr,pfn) BTFIXUP_CALL(flush_cache_page)(vma,addr)
  #define flush_icache_range(start, end)		do { } while (0)
  #define flush_icache_page(vma, pg)		do { } while (0)
  
  #define flush_icache_user_range(vma,pg,adr,len)	do { } while (0)
  
  #define copy_to_user_page(vma, page, vaddr, dst, src, len) \
  	do {							\
  		flush_cache_page(vma, vaddr, page_to_pfn(page));\
  		memcpy(dst, src, len);				\
  	} while (0)
  #define copy_from_user_page(vma, page, vaddr, dst, src, len) \
  	do {							\
  		flush_cache_page(vma, vaddr, page_to_pfn(page));\
  		memcpy(dst, src, len);				\
  	} while (0)
  
  BTFIXUPDEF_CALL(void, __flush_page_to_ram, unsigned long)
  BTFIXUPDEF_CALL(void, flush_sig_insns, struct mm_struct *, unsigned long)
  
  #define __flush_page_to_ram(addr) BTFIXUP_CALL(__flush_page_to_ram)(addr)
  #define flush_sig_insns(mm,insn_addr) BTFIXUP_CALL(flush_sig_insns)(mm,insn_addr)
  
  extern void sparc_flush_page_to_ram(struct page *page);
  
  #define flush_dcache_page(page)			sparc_flush_page_to_ram(page)
  #define flush_dcache_mmap_lock(mapping)		do { } while (0)
  #define flush_dcache_mmap_unlock(mapping)	do { } while (0)
  
  #define flush_cache_vmap(start, end)		flush_cache_all()
  #define flush_cache_vunmap(start, end)		flush_cache_all()
  
  #endif /* _SPARC_CACHEFLUSH_H */