128 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef _ASM_GENERIC_CACHEFLUSH_H3#define _ASM_GENERIC_CACHEFLUSH_H4 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 when14 * the cache is mapped to physical memory, not virtual memory15 */16#ifndef flush_cache_all17static inline void flush_cache_all(void)18{19}20#endif21 22#ifndef flush_cache_mm23static inline void flush_cache_mm(struct mm_struct *mm)24{25}26#endif27 28#ifndef flush_cache_dup_mm29static inline void flush_cache_dup_mm(struct mm_struct *mm)30{31}32#endif33 34#ifndef flush_cache_range35static inline void flush_cache_range(struct vm_area_struct *vma,36 unsigned long start,37 unsigned long end)38{39}40#endif41 42#ifndef flush_cache_page43static inline void flush_cache_page(struct vm_area_struct *vma,44 unsigned long vmaddr,45 unsigned long pfn)46{47}48#endif49 50#ifndef ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE51static inline void flush_dcache_page(struct page *page)52{53}54 55#define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 056#endif57 58#ifndef flush_dcache_mmap_lock59static inline void flush_dcache_mmap_lock(struct address_space *mapping)60{61}62#endif63 64#ifndef flush_dcache_mmap_unlock65static inline void flush_dcache_mmap_unlock(struct address_space *mapping)66{67}68#endif69 70#ifndef flush_icache_range71static inline void flush_icache_range(unsigned long start, unsigned long end)72{73}74#endif75 76#ifndef flush_icache_user_range77#define flush_icache_user_range flush_icache_range78#endif79 80#ifndef flush_icache_user_page81static inline void flush_icache_user_page(struct vm_area_struct *vma,82 struct page *page,83 unsigned long addr, int len)84{85}86#endif87 88#ifndef flush_cache_vmap89static inline void flush_cache_vmap(unsigned long start, unsigned long end)90{91}92#endif93 94#ifndef flush_cache_vmap_early95static inline void flush_cache_vmap_early(unsigned long start, unsigned long end)96{97}98#endif99 100#ifndef flush_cache_vunmap101static inline void flush_cache_vunmap(unsigned long start, unsigned long end)102{103}104#endif105 106#ifndef copy_to_user_page107#define copy_to_user_page(vma, page, vaddr, dst, src, len) \108 do { \109 instrument_copy_to_user((void __user *)dst, src, len); \110 memcpy(dst, src, len); \111 flush_icache_user_page(vma, page, vaddr, len); \112 } while (0)113#endif114 115 116#ifndef copy_from_user_page117#define copy_from_user_page(vma, page, vaddr, dst, src, len) \118 do { \119 instrument_copy_from_user_before(dst, (void __user *)src, \120 len); \121 memcpy(dst, src, len); \122 instrument_copy_from_user_after(dst, (void __user *)src, len, \123 0); \124 } while (0)125#endif126 127#endif /* _ASM_GENERIC_CACHEFLUSH_H */128