0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __UM_PGALLOC_H
0009 #define __UM_PGALLOC_H
0010
0011 #include <linux/mm.h>
0012
0013 #include <asm-generic/pgalloc.h>
0014
0015 #define pmd_populate_kernel(mm, pmd, pte) \
0016 set_pmd(pmd, __pmd(_PAGE_TABLE + (unsigned long) __pa(pte)))
0017
0018 #define pmd_populate(mm, pmd, pte) \
0019 set_pmd(pmd, __pmd(_PAGE_TABLE + \
0020 ((unsigned long long)page_to_pfn(pte) << \
0021 (unsigned long long) PAGE_SHIFT)))
0022
0023
0024
0025
0026 extern pgd_t *pgd_alloc(struct mm_struct *);
0027
0028 #define __pte_free_tlb(tlb,pte, address) \
0029 do { \
0030 pgtable_pte_page_dtor(pte); \
0031 tlb_remove_page((tlb),(pte)); \
0032 } while (0)
0033
0034 #ifdef CONFIG_3_LEVEL_PGTABLES
0035
0036 #define __pmd_free_tlb(tlb, pmd, address) \
0037 do { \
0038 pgtable_pmd_page_dtor(virt_to_page(pmd)); \
0039 tlb_remove_page((tlb),virt_to_page(pmd)); \
0040 } while (0) \
0041
0042 #endif
0043
0044 #endif
0045