1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) 4 */ 5 6 #ifndef __ASM_ARC_TLBFLUSH__ 7 #define __ASM_ARC_TLBFLUSH__ 8 9 #include <linux/mm.h> 10 11 void local_flush_tlb_all(void); 12 void local_flush_tlb_mm(struct mm_struct *mm); 13 void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page); 14 void local_flush_tlb_kernel_range(unsigned long start, unsigned long end); 15 void local_flush_tlb_range(struct vm_area_struct *vma, 16 unsigned long start, unsigned long end); 17 #ifdef CONFIG_TRANSPARENT_HUGEPAGE 18 void local_flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start, 19 unsigned long end); 20 #endif 21 22 #ifndef CONFIG_SMP 23 #define flush_tlb_range(vma, s, e) local_flush_tlb_range(vma, s, e) 24 #define flush_tlb_page(vma, page) local_flush_tlb_page(vma, page) 25 #define flush_tlb_kernel_range(s, e) local_flush_tlb_kernel_range(s, e) 26 #define flush_tlb_all() local_flush_tlb_all() 27 #define flush_tlb_mm(mm) local_flush_tlb_mm(mm) 28 #ifdef CONFIG_TRANSPARENT_HUGEPAGE 29 #define flush_pmd_tlb_range(vma, s, e) local_flush_pmd_tlb_range(vma, s, e) 30 #endif 31 #else 32 extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, 33 unsigned long end); 34 extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page); 35 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end); 36 extern void flush_tlb_all(void); 37 extern void flush_tlb_mm(struct mm_struct *mm); 38 #ifdef CONFIG_TRANSPARENT_HUGEPAGE 39 extern void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end); 40 #endif 41 #endif /* CONFIG_SMP */ 42 #endif 43