at v6.3 2.7 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _ASM_GENERIC_CACHEFLUSH_H 3#define _ASM_GENERIC_CACHEFLUSH_H 4 5#include <linux/instrumented.h> 6 7struct mm_struct; 8struct vm_area_struct; 9struct page; 10struct address_space; 11 12/* 13 * The cache doesn't need to be flushed when TLB entries change when 14 * the cache is mapped to physical memory, not virtual memory 15 */ 16#ifndef flush_cache_all 17static inline void flush_cache_all(void) 18{ 19} 20#endif 21 22#ifndef flush_cache_mm 23static inline void flush_cache_mm(struct mm_struct *mm) 24{ 25} 26#endif 27 28#ifndef flush_cache_dup_mm 29static inline void flush_cache_dup_mm(struct mm_struct *mm) 30{ 31} 32#endif 33 34#ifndef flush_cache_range 35static inline void flush_cache_range(struct vm_area_struct *vma, 36 unsigned long start, 37 unsigned long end) 38{ 39} 40#endif 41 42#ifndef flush_cache_page 43static inline void flush_cache_page(struct vm_area_struct *vma, 44 unsigned long vmaddr, 45 unsigned long pfn) 46{ 47} 48#endif 49 50#ifndef ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 51static inline void flush_dcache_page(struct page *page) 52{ 53} 54 55#define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 0 56#endif 57 58#ifndef flush_dcache_mmap_lock 59static inline void flush_dcache_mmap_lock(struct address_space *mapping) 60{ 61} 62#endif 63 64#ifndef flush_dcache_mmap_unlock 65static inline void flush_dcache_mmap_unlock(struct address_space *mapping) 66{ 67} 68#endif 69 70#ifndef flush_icache_range 71static inline void flush_icache_range(unsigned long start, unsigned long end) 72{ 73} 74#endif 75 76#ifndef flush_icache_user_range 77#define flush_icache_user_range flush_icache_range 78#endif 79 80#ifndef flush_icache_page 81static inline void flush_icache_page(struct vm_area_struct *vma, 82 struct page *page) 83{ 84} 85#endif 86 87#ifndef flush_icache_user_page 88static inline void flush_icache_user_page(struct vm_area_struct *vma, 89 struct page *page, 90 unsigned long addr, int len) 91{ 92} 93#endif 94 95#ifndef flush_cache_vmap 96static inline void flush_cache_vmap(unsigned long start, unsigned long end) 97{ 98} 99#endif 100 101#ifndef flush_cache_vunmap 102static inline void flush_cache_vunmap(unsigned long start, unsigned long end) 103{ 104} 105#endif 106 107#ifndef copy_to_user_page 108#define copy_to_user_page(vma, page, vaddr, dst, src, len) \ 109 do { \ 110 instrument_copy_to_user((void __user *)dst, src, len); \ 111 memcpy(dst, src, len); \ 112 flush_icache_user_page(vma, page, vaddr, len); \ 113 } while (0) 114#endif 115 116 117#ifndef copy_from_user_page 118#define copy_from_user_page(vma, page, vaddr, dst, src, len) \ 119 do { \ 120 instrument_copy_from_user_before(dst, (void __user *)src, \ 121 len); \ 122 memcpy(dst, src, len); \ 123 instrument_copy_from_user_after(dst, (void __user *)src, len, \ 124 0); \ 125 } while (0) 126#endif 127 128#endif /* _ASM_GENERIC_CACHEFLUSH_H */