2005-04-17 02:20:36 +04:00
/*
* Copyright ( C ) 2000 , 2001 , 2002 Jeff Dike ( jdike @ karaya . com )
* Copyright 2003 PathScale , Inc .
* Derived from include / asm - i386 / pgalloc . h and include / asm - i386 / pgtable . h
* Licensed under the GPL
*/
# ifndef __UM_PGALLOC_H
# define __UM_PGALLOC_H
# include "linux/mm.h"
# include "asm/fixmap.h"
# define pmd_populate_kernel(mm, pmd, pte) \
set_pmd ( pmd , __pmd ( _PAGE_TABLE + ( unsigned long ) __pa ( pte ) ) )
# define pmd_populate(mm, pmd, pte) \
set_pmd ( pmd , __pmd ( _PAGE_TABLE + \
( ( unsigned long long ) page_to_pfn ( pte ) < < \
( unsigned long long ) PAGE_SHIFT ) ) )
/*
* Allocate and free page tables .
*/
extern pgd_t * pgd_alloc ( struct mm_struct * ) ;
extern void pgd_free ( pgd_t * pgd ) ;
extern pte_t * pte_alloc_one_kernel ( struct mm_struct * , unsigned long ) ;
extern struct page * pte_alloc_one ( struct mm_struct * , unsigned long ) ;
static inline void pte_free_kernel ( pte_t * pte )
{
free_page ( ( unsigned long ) pte ) ;
}
static inline void pte_free ( struct page * pte )
{
__free_page ( pte ) ;
}
# define __pte_free_tlb(tlb,pte) tlb_remove_page((tlb),(pte))
# ifdef CONFIG_3_LEVEL_PGTABLES
2005-09-04 02:57:52 +04:00
extern __inline__ void pmd_free ( pmd_t * pmd )
{
free_page ( ( unsigned long ) pmd ) ;
}
# define __pmd_free_tlb(tlb,x) tlb_remove_page((tlb),virt_to_page(x))
2005-04-17 02:20:36 +04:00
# endif
# define check_pgt_cache() do { } while (0)
# endif
/*
* Overrides for Emacs so that we follow Linus ' s tabbing style .
* Emacs will notice this stuff at the end of the file and automatically
* adjust the settings for this buffer only . This must remain at the end
* of the file .
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* Local variables :
* c - file - style : " linux "
* End :
*/