aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-arm/pgalloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-arm/pgalloc.h')
-rw-r--r--include/asm-arm/pgalloc.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/include/asm-arm/pgalloc.h b/include/asm-arm/pgalloc.h
index 4d4394552911..163b0305dd76 100644
--- a/include/asm-arm/pgalloc.h
+++ b/include/asm-arm/pgalloc.h
@@ -27,14 +27,14 @@
27 * Since we have only two-level page tables, these are trivial 27 * Since we have only two-level page tables, these are trivial
28 */ 28 */
29#define pmd_alloc_one(mm,addr) ({ BUG(); ((pmd_t *)2); }) 29#define pmd_alloc_one(mm,addr) ({ BUG(); ((pmd_t *)2); })
30#define pmd_free(pmd) do { } while (0) 30#define pmd_free(mm, pmd) do { } while (0)
31#define pgd_populate(mm,pmd,pte) BUG() 31#define pgd_populate(mm,pmd,pte) BUG()
32 32
33extern pgd_t *get_pgd_slow(struct mm_struct *mm); 33extern pgd_t *get_pgd_slow(struct mm_struct *mm);
34extern void free_pgd_slow(pgd_t *pgd); 34extern void free_pgd_slow(struct mm_struct *mm, pgd_t *pgd);
35 35
36#define pgd_alloc(mm) get_pgd_slow(mm) 36#define pgd_alloc(mm) get_pgd_slow(mm)
37#define pgd_free(pgd) free_pgd_slow(pgd) 37#define pgd_free(mm, pgd) free_pgd_slow(mm, pgd)
38 38
39/* 39/*
40 * Allocate one PTE table. 40 * Allocate one PTE table.
@@ -66,7 +66,7 @@ pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr)
66 return pte; 66 return pte;
67} 67}
68 68
69static inline struct page * 69static inline pgtable_t
70pte_alloc_one(struct mm_struct *mm, unsigned long addr) 70pte_alloc_one(struct mm_struct *mm, unsigned long addr)
71{ 71{
72 struct page *pte; 72 struct page *pte;
@@ -75,6 +75,7 @@ pte_alloc_one(struct mm_struct *mm, unsigned long addr)
75 if (pte) { 75 if (pte) {
76 void *page = page_address(pte); 76 void *page = page_address(pte);
77 clean_dcache_area(page, sizeof(pte_t) * PTRS_PER_PTE); 77 clean_dcache_area(page, sizeof(pte_t) * PTRS_PER_PTE);
78 pgtable_page_ctor(pte);
78 } 79 }
79 80
80 return pte; 81 return pte;
@@ -83,7 +84,7 @@ pte_alloc_one(struct mm_struct *mm, unsigned long addr)
83/* 84/*
84 * Free one PTE table. 85 * Free one PTE table.
85 */ 86 */
86static inline void pte_free_kernel(pte_t *pte) 87static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
87{ 88{
88 if (pte) { 89 if (pte) {
89 pte -= PTRS_PER_PTE; 90 pte -= PTRS_PER_PTE;
@@ -91,8 +92,9 @@ static inline void pte_free_kernel(pte_t *pte)
91 } 92 }
92} 93}
93 94
94static inline void pte_free(struct page *pte) 95static inline void pte_free(struct mm_struct *mm, pgtable_t pte)
95{ 96{
97 pgtable_page_dtor(pte);
96 __free_page(pte); 98 __free_page(pte);
97} 99}
98 100
@@ -123,10 +125,11 @@ pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmdp, pte_t *ptep)
123} 125}
124 126
125static inline void 127static inline void
126pmd_populate(struct mm_struct *mm, pmd_t *pmdp, struct page *ptep) 128pmd_populate(struct mm_struct *mm, pmd_t *pmdp, pgtable_t ptep)
127{ 129{
128 __pmd_populate(pmdp, page_to_pfn(ptep) << PAGE_SHIFT | _PAGE_USER_TABLE); 130 __pmd_populate(pmdp, page_to_pfn(ptep) << PAGE_SHIFT | _PAGE_USER_TABLE);
129} 131}
132#define pmd_pgtable(pmd) pmd_page(pmd)
130 133
131#endif /* CONFIG_MMU */ 134#endif /* CONFIG_MMU */
132 135