2005-04-17 02:20:36 +04:00
/*
* arch / sh / mm / hugetlbpage . c
*
* SuperH HugeTLB page support .
*
* Cloned from sparc64 by Paul Mundt .
*
* Copyright ( C ) 2002 , 2003 David S . Miller ( davem @ redhat . com )
*/
# include <linux/init.h>
# include <linux/fs.h>
# include <linux/mm.h>
# include <linux/hugetlb.h>
# include <linux/pagemap.h>
# include <linux/sysctl.h>
# include <asm/mman.h>
# include <asm/pgalloc.h>
# include <asm/tlb.h>
# include <asm/tlbflush.h>
# include <asm/cacheflush.h>
2008-07-24 08:27:41 +04:00
pte_t * huge_pte_alloc ( struct mm_struct * mm ,
unsigned long addr , unsigned long sz )
2005-04-17 02:20:36 +04:00
{
pgd_t * pgd ;
2006-09-27 08:11:57 +04:00
pud_t * pud ;
2005-04-17 02:20:36 +04:00
pmd_t * pmd ;
pte_t * pte = NULL ;
pgd = pgd_offset ( mm , addr ) ;
if ( pgd ) {
2006-09-27 08:11:57 +04:00
pud = pud_alloc ( mm , pgd , addr ) ;
if ( pud ) {
pmd = pmd_alloc ( mm , pud , addr ) ;
if ( pmd )
2016-03-18 00:19:11 +03:00
pte = pte_alloc_map ( mm , pmd , addr ) ;
2006-09-27 08:11:57 +04:00
}
2005-04-17 02:20:36 +04:00
}
2006-09-27 08:11:57 +04:00
2005-04-17 02:20:36 +04:00
return pte ;
}
2017-07-07 01:39:42 +03:00
pte_t * huge_pte_offset ( struct mm_struct * mm ,
unsigned long addr , unsigned long sz )
2005-04-17 02:20:36 +04:00
{
pgd_t * pgd ;
2006-09-27 08:11:57 +04:00
pud_t * pud ;
2005-04-17 02:20:36 +04:00
pmd_t * pmd ;
pte_t * pte = NULL ;
pgd = pgd_offset ( mm , addr ) ;
if ( pgd ) {
2006-09-27 08:11:57 +04:00
pud = pud_offset ( pgd , addr ) ;
if ( pud ) {
pmd = pmd_offset ( pud , addr ) ;
if ( pmd )
pte = pte_offset_map ( pmd , addr ) ;
}
2005-06-22 04:14:44 +04:00
}
2005-04-17 02:20:36 +04:00
2006-09-27 08:11:57 +04:00
return pte ;
2005-04-17 02:20:36 +04:00
}
int pmd_huge ( pmd_t pmd )
{
return 0 ;
}
2008-07-24 08:27:50 +04:00
int pud_huge ( pud_t pud )
{
return 0 ;
}