2005-04-16 15:20:36 -07:00
# ifndef _SPARC_TLBFLUSH_H
# define _SPARC_TLBFLUSH_H
# include <linux/mm.h>
// #include <asm/processor.h>
/*
* TLB flushing :
*
* - flush_tlb ( ) flushes the current mm struct TLBs XXX Exists ?
* - 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 ( vma , start , end ) flushes a range of pages
* - flush_tlb_kernel_range ( start , end ) flushes a range of kernel pages
*/
# ifdef CONFIG_SMP
BTFIXUPDEF_CALL ( void , local_flush_tlb_all , void )
BTFIXUPDEF_CALL ( void , local_flush_tlb_mm , struct mm_struct * )
BTFIXUPDEF_CALL ( void , local_flush_tlb_range , struct vm_area_struct * , unsigned long , unsigned long )
BTFIXUPDEF_CALL ( void , local_flush_tlb_page , struct vm_area_struct * , unsigned long )
# define local_flush_tlb_all() BTFIXUP_CALL(local_flush_tlb_all)()
# define local_flush_tlb_mm(mm) BTFIXUP_CALL(local_flush_tlb_mm)(mm)
# define local_flush_tlb_range(vma,start,end) BTFIXUP_CALL(local_flush_tlb_range)(vma,start,end)
# define local_flush_tlb_page(vma,addr) BTFIXUP_CALL(local_flush_tlb_page)(vma,addr)
extern void smp_flush_tlb_all ( void ) ;
extern void smp_flush_tlb_mm ( struct mm_struct * mm ) ;
extern void smp_flush_tlb_range ( struct vm_area_struct * vma ,
unsigned long start ,
unsigned long end ) ;
extern void smp_flush_tlb_page ( struct vm_area_struct * mm , unsigned long page ) ;
# endif /* CONFIG_SMP */
BTFIXUPDEF_CALL ( void , flush_tlb_all , void )
BTFIXUPDEF_CALL ( void , flush_tlb_mm , struct mm_struct * )
BTFIXUPDEF_CALL ( void , flush_tlb_range , struct vm_area_struct * , unsigned long , unsigned long )
BTFIXUPDEF_CALL ( void , flush_tlb_page , struct vm_area_struct * , unsigned long )
# define flush_tlb_all() BTFIXUP_CALL(flush_tlb_all)()
# define flush_tlb_mm(mm) BTFIXUP_CALL(flush_tlb_mm)(mm)
# define flush_tlb_range(vma,start,end) BTFIXUP_CALL(flush_tlb_range)(vma,start,end)
# define flush_tlb_page(vma,addr) BTFIXUP_CALL(flush_tlb_page)(vma,addr)
// #define flush_tlb() flush_tlb_mm(current->active_mm) /* XXX Sure? */
/*
* This is a kludge , until I know better . - - zaitcev XXX
*/
2007-08-25 15:21:51 -07:00
static inline void flush_tlb_kernel_range ( unsigned long start ,
unsigned long end )
{
flush_tlb_all ( ) ;
}
2005-04-16 15:20:36 -07:00
# endif /* _SPARC_TLBFLUSH_H */