diff options
Diffstat (limited to 'include/asm-parisc/pgalloc.h')
-rw-r--r-- | include/asm-parisc/pgalloc.h | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/include/asm-parisc/pgalloc.h b/include/asm-parisc/pgalloc.h index 1af1a41e0723..3996dfc30a3f 100644 --- a/include/asm-parisc/pgalloc.h +++ b/include/asm-parisc/pgalloc.h | |||
@@ -43,7 +43,7 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm) | |||
43 | return actual_pgd; | 43 | return actual_pgd; |
44 | } | 44 | } |
45 | 45 | ||
46 | static inline void pgd_free(pgd_t *pgd) | 46 | static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) |
47 | { | 47 | { |
48 | #ifdef CONFIG_64BIT | 48 | #ifdef CONFIG_64BIT |
49 | pgd -= PTRS_PER_PGD; | 49 | pgd -= PTRS_PER_PGD; |
@@ -70,7 +70,7 @@ static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address) | |||
70 | return pmd; | 70 | return pmd; |
71 | } | 71 | } |
72 | 72 | ||
73 | static inline void pmd_free(pmd_t *pmd) | 73 | static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) |
74 | { | 74 | { |
75 | #ifdef CONFIG_64BIT | 75 | #ifdef CONFIG_64BIT |
76 | if(pmd_flag(*pmd) & PxD_FLAG_ATTACHED) | 76 | if(pmd_flag(*pmd) & PxD_FLAG_ATTACHED) |
@@ -91,7 +91,7 @@ static inline void pmd_free(pmd_t *pmd) | |||
91 | */ | 91 | */ |
92 | 92 | ||
93 | #define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *)2); }) | 93 | #define pmd_alloc_one(mm, addr) ({ BUG(); ((pmd_t *)2); }) |
94 | #define pmd_free(x) do { } while (0) | 94 | #define pmd_free(mm, x) do { } while (0) |
95 | #define pgd_populate(mm, pmd, pte) BUG() | 95 | #define pgd_populate(mm, pmd, pte) BUG() |
96 | 96 | ||
97 | #endif | 97 | #endif |
@@ -115,11 +115,14 @@ pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t *pte) | |||
115 | 115 | ||
116 | #define pmd_populate(mm, pmd, pte_page) \ | 116 | #define pmd_populate(mm, pmd, pte_page) \ |
117 | pmd_populate_kernel(mm, pmd, page_address(pte_page)) | 117 | pmd_populate_kernel(mm, pmd, page_address(pte_page)) |
118 | #define pmd_pgtable(pmd) pmd_page(pmd) | ||
118 | 119 | ||
119 | static inline struct page * | 120 | static inline pgtable_t |
120 | pte_alloc_one(struct mm_struct *mm, unsigned long address) | 121 | pte_alloc_one(struct mm_struct *mm, unsigned long address) |
121 | { | 122 | { |
122 | struct page *page = alloc_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); | 123 | struct page *page = alloc_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); |
124 | if (page) | ||
125 | pgtable_page_ctor(page); | ||
123 | return page; | 126 | return page; |
124 | } | 127 | } |
125 | 128 | ||
@@ -130,12 +133,16 @@ pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr) | |||
130 | return pte; | 133 | return pte; |
131 | } | 134 | } |
132 | 135 | ||
133 | static inline void pte_free_kernel(pte_t *pte) | 136 | static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) |
134 | { | 137 | { |
135 | free_page((unsigned long)pte); | 138 | free_page((unsigned long)pte); |
136 | } | 139 | } |
137 | 140 | ||
138 | #define pte_free(page) pte_free_kernel(page_address(page)) | 141 | static inline void pte_free_kernel(struct mm_struct *mm, struct page *pte) |
142 | { | ||
143 | pgtable_page_dtor(pte); | ||
144 | pte_free_kernel(page_address((pte)); | ||
145 | } | ||
139 | 146 | ||
140 | #define check_pgt_cache() do { } while (0) | 147 | #define check_pgt_cache() do { } while (0) |
141 | 148 | ||