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