2005-04-16 15:20:36 -07:00
# ifndef _CRIS_TLBFLUSH_H
# define _CRIS_TLBFLUSH_H
# include <linux/mm.h>
# include <asm/processor.h>
# include <asm/pgtable.h>
# include <asm/pgalloc.h>
/*
* TLB flushing ( implemented in arch / cris / mm / tlb . c ) :
*
* - flush_tlb ( ) flushes the current mm struct TLBs
* - flush_tlb_all ( ) flushes all processes TLBs
* - flush_tlb_mm ( mm ) flushes the specified mm context TLB ' s
* - flush_tlb_page ( vma , vmaddr ) flushes one page
* - flush_tlb_range ( mm , start , end ) flushes a range of pages
*
*/
2005-07-27 11:44:42 -07:00
extern void __flush_tlb_all ( void ) ;
extern void __flush_tlb_mm ( struct mm_struct * mm ) ;
extern void __flush_tlb_page ( struct vm_area_struct * vma ,
unsigned long addr ) ;
# ifdef CONFIG_SMP
2005-04-16 15:20:36 -07:00
extern void flush_tlb_all ( void ) ;
extern void flush_tlb_mm ( struct mm_struct * mm ) ;
extern void flush_tlb_page ( struct vm_area_struct * vma ,
unsigned long addr ) ;
2005-07-27 11:44:42 -07:00
# else
# define flush_tlb_all __flush_tlb_all
# define flush_tlb_mm __flush_tlb_mm
# define flush_tlb_page __flush_tlb_page
# endif
static inline void flush_tlb_range ( struct vm_area_struct * vma , unsigned long start , unsigned long end )
{
flush_tlb_mm ( vma - > vm_mm ) ;
}
2005-04-16 15:20:36 -07:00
2005-11-07 00:58:44 -08:00
static inline void flush_tlb_pgtables ( struct mm_struct * mm ,
2005-04-16 15:20:36 -07:00
unsigned long start , unsigned long end )
{
/* CRIS does not keep any page table caches in TLB */
}
2005-11-07 00:58:44 -08:00
static inline void flush_tlb ( void )
2005-04-16 15:20:36 -07:00
{
flush_tlb_mm ( current - > mm ) ;
}
# define flush_tlb_kernel_range(start, end) flush_tlb_all()
# endif /* _CRIS_TLBFLUSH_H */