at v2.6.21 1.5 kB view raw
1#ifndef _ALPHA_PGALLOC_H 2#define _ALPHA_PGALLOC_H 3 4#include <linux/mm.h> 5#include <linux/mmzone.h> 6 7/* 8 * Allocate and free page tables. The xxx_kernel() versions are 9 * used to allocate a kernel page table - this turns on ASN bits 10 * if any. 11 */ 12 13static inline void 14pmd_populate(struct mm_struct *mm, pmd_t *pmd, struct page *pte) 15{ 16 pmd_set(pmd, (pte_t *)(page_to_pa(pte) + PAGE_OFFSET)); 17} 18 19static inline void 20pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t *pte) 21{ 22 pmd_set(pmd, pte); 23} 24 25static inline void 26pgd_populate(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmd) 27{ 28 pgd_set(pgd, pmd); 29} 30 31extern pgd_t *pgd_alloc(struct mm_struct *mm); 32 33static inline void 34pgd_free(pgd_t *pgd) 35{ 36 free_page((unsigned long)pgd); 37} 38 39static inline pmd_t * 40pmd_alloc_one(struct mm_struct *mm, unsigned long address) 41{ 42 pmd_t *ret = (pmd_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); 43 return ret; 44} 45 46static inline void 47pmd_free(pmd_t *pmd) 48{ 49 free_page((unsigned long)pmd); 50} 51 52extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr); 53 54static inline void 55pte_free_kernel(pte_t *pte) 56{ 57 free_page((unsigned long)pte); 58} 59 60static inline struct page * 61pte_alloc_one(struct mm_struct *mm, unsigned long addr) 62{ 63 pte_t *pte = pte_alloc_one_kernel(mm, addr); 64 if (pte) 65 return virt_to_page(pte); 66 return NULL; 67} 68 69static inline void 70pte_free(struct page *page) 71{ 72 __free_page(page); 73} 74 75#define check_pgt_cache() do { } while (0) 76 77#endif /* _ALPHA_PGALLOC_H */