2008-04-28 13:13:27 +04:00
# ifndef _ASM_IA64_HUGETLB_H
# define _ASM_IA64_HUGETLB_H
# include <asm/page.h>
2008-07-24 08:27:10 +04:00
void hugetlb_free_pgd_range ( struct mmu_gather * tlb , unsigned long addr ,
2008-04-28 13:13:27 +04:00
unsigned long end , unsigned long floor ,
unsigned long ceiling ) ;
2008-07-24 08:27:41 +04:00
int prepare_hugepage_range ( struct file * file ,
unsigned long addr , unsigned long len ) ;
2008-04-28 13:13:27 +04:00
static inline int is_hugepage_only_range ( struct mm_struct * mm ,
unsigned long addr ,
unsigned long len )
{
return ( REGION_NUMBER ( addr ) = = RGN_HPAGE | |
REGION_NUMBER ( ( addr ) + ( len ) - 1 ) = = RGN_HPAGE ) ;
}
static inline void hugetlb_prefault_arch_hook ( struct mm_struct * mm )
{
}
static inline void set_huge_pte_at ( struct mm_struct * mm , unsigned long addr ,
pte_t * ptep , pte_t pte )
{
set_pte_at ( mm , addr , ptep , pte ) ;
}
static inline pte_t huge_ptep_get_and_clear ( struct mm_struct * mm ,
unsigned long addr , pte_t * ptep )
{
return ptep_get_and_clear ( mm , addr , ptep ) ;
}
2008-04-28 13:13:28 +04:00
static inline void huge_ptep_clear_flush ( struct vm_area_struct * vma ,
unsigned long addr , pte_t * ptep )
{
}
2008-04-28 13:13:29 +04:00
static inline int huge_pte_none ( pte_t pte )
{
return pte_none ( pte ) ;
}
static inline pte_t huge_pte_wrprotect ( pte_t pte )
{
return pte_wrprotect ( pte ) ;
}
static inline void huge_ptep_set_wrprotect ( struct mm_struct * mm ,
unsigned long addr , pte_t * ptep )
{
ptep_set_wrprotect ( mm , addr , ptep ) ;
}
static inline int huge_ptep_set_access_flags ( struct vm_area_struct * vma ,
unsigned long addr , pte_t * ptep ,
pte_t pte , int dirty )
{
return ptep_set_access_flags ( vma , addr , ptep , pte , dirty ) ;
}
static inline pte_t huge_ptep_get ( pte_t * ptep )
{
return * ptep ;
}
static inline int arch_prepare_hugepage ( struct page * page )
{
return 0 ;
}
static inline void arch_release_hugepage ( struct page * page )
{
}
2008-04-28 13:13:27 +04:00
# endif /* _ASM_IA64_HUGETLB_H */