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