linux/arch/arc/include/asm/tlbflush.h
<<
>>
Prefs
   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
  11void local_flush_tlb_all(void);
  12void local_flush_tlb_mm(struct mm_struct *mm);
  13void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
  14void local_flush_tlb_kernel_range(unsigned long start, unsigned long end);
  15void local_flush_tlb_range(struct vm_area_struct *vma,
  16                           unsigned long start, unsigned long end);
  17#ifdef CONFIG_TRANSPARENT_HUGEPAGE
  18void 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
  32extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
  33                                                         unsigned long end);
  34extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
  35extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
  36extern void flush_tlb_all(void);
  37extern void flush_tlb_mm(struct mm_struct *mm);
  38#ifdef CONFIG_TRANSPARENT_HUGEPAGE
  39extern 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