root/arch/microblaze/include/asm/tlbflush.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. local_flush_tlb_all
  2. local_flush_tlb_mm
  3. local_flush_tlb_page
  4. local_flush_tlb_range
  5. flush_tlb_pgtables

   1 /*
   2  * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
   3  * Copyright (C) 2008-2009 PetaLogix
   4  * Copyright (C) 2006 Atmark Techno, Inc.
   5  *
   6  * This file is subject to the terms and conditions of the GNU General Public
   7  * License. See the file "COPYING" in the main directory of this archive
   8  * for more details.
   9  */
  10 
  11 #ifndef _ASM_MICROBLAZE_TLBFLUSH_H
  12 #define _ASM_MICROBLAZE_TLBFLUSH_H
  13 
  14 #ifdef CONFIG_MMU
  15 
  16 #include <linux/sched.h>
  17 #include <linux/threads.h>
  18 #include <asm/processor.h>      /* For TASK_SIZE */
  19 #include <asm/mmu.h>
  20 #include <asm/page.h>
  21 #include <asm/pgalloc.h>
  22 
  23 extern void _tlbie(unsigned long address);
  24 extern void _tlbia(void);
  25 
  26 #define __tlbia()       { preempt_disable(); _tlbia(); preempt_enable(); }
  27 #define __tlbie(x)      { _tlbie(x); }
  28 
  29 static inline void local_flush_tlb_all(void)
  30         { __tlbia(); }
  31 static inline void local_flush_tlb_mm(struct mm_struct *mm)
  32         { __tlbia(); }
  33 static inline void local_flush_tlb_page(struct vm_area_struct *vma,
  34                                 unsigned long vmaddr)
  35         { __tlbie(vmaddr); }
  36 static inline void local_flush_tlb_range(struct vm_area_struct *vma,
  37                 unsigned long start, unsigned long end)
  38         { __tlbia(); }
  39 
  40 #define flush_tlb_kernel_range(start, end)      do { } while (0)
  41 
  42 #define update_mmu_cache(vma, addr, ptep)       do { } while (0)
  43 
  44 #define flush_tlb_all local_flush_tlb_all
  45 #define flush_tlb_mm local_flush_tlb_mm
  46 #define flush_tlb_page local_flush_tlb_page
  47 #define flush_tlb_range local_flush_tlb_range
  48 
  49 /*
  50  * This is called in munmap when we have freed up some page-table
  51  * pages.  We don't need to do anything here, there's nothing special
  52  * about our page-table pages.  -- paulus
  53  */
  54 static inline void flush_tlb_pgtables(struct mm_struct *mm,
  55         unsigned long start, unsigned long end) { }
  56 
  57 #else /* CONFIG_MMU */
  58 
  59 #define flush_tlb()                             BUG()
  60 #define flush_tlb_all()                         BUG()
  61 #define flush_tlb_mm(mm)                        BUG()
  62 #define flush_tlb_page(vma, addr)               BUG()
  63 #define flush_tlb_range(mm, start, end)         BUG()
  64 #define flush_tlb_pgtables(mm, start, end)      BUG()
  65 #define flush_tlb_kernel_range(start, end)      BUG()
  66 
  67 #endif /* CONFIG_MMU */
  68 
  69 #endif /* _ASM_MICROBLAZE_TLBFLUSH_H */

/* [<][>][^][v][top][bottom][index][help] */