linux/arch/cris/include/asm/tlbflush.h
<<
>>
Prefs
   1#ifndef _CRIS_TLBFLUSH_H
   2#define _CRIS_TLBFLUSH_H
   3
   4#include <linux/mm.h>
   5#include <asm/processor.h>
   6#include <asm/pgtable.h>
   7#include <asm/pgalloc.h>
   8
   9/*
  10 * TLB flushing (implemented in arch/cris/mm/tlb.c):
  11 *
  12 *  - flush_tlb() flushes the current mm struct TLBs
  13 *  - flush_tlb_all() flushes all processes TLBs
  14 *  - flush_tlb_mm(mm) flushes the specified mm context TLB's
  15 *  - flush_tlb_page(vma, vmaddr) flushes one page
  16 *  - flush_tlb_range(mm, start, end) flushes a range of pages
  17 *
  18 */
  19
  20extern void __flush_tlb_all(void);
  21extern void __flush_tlb_mm(struct mm_struct *mm);
  22extern void __flush_tlb_page(struct vm_area_struct *vma,
  23                           unsigned long addr);
  24
  25#ifdef CONFIG_SMP
  26extern void flush_tlb_all(void);
  27extern void flush_tlb_mm(struct mm_struct *mm);
  28extern void flush_tlb_page(struct vm_area_struct *vma, 
  29                           unsigned long addr);
  30#else
  31#define flush_tlb_all __flush_tlb_all
  32#define flush_tlb_mm __flush_tlb_mm
  33#define flush_tlb_page __flush_tlb_page
  34#endif
  35
  36static inline void flush_tlb_range(struct vm_area_struct * vma, unsigned long start, unsigned long end)
  37{
  38        flush_tlb_mm(vma->vm_mm);
  39}
  40
  41static inline void flush_tlb(void)
  42{
  43        flush_tlb_mm(current->mm);
  44}
  45
  46#define flush_tlb_kernel_range(start, end) flush_tlb_all()
  47
  48#endif /* _CRIS_TLBFLUSH_H */
  49