Lines Matching full:mm
3 * linux/arch/arm/mm/pgd.c
7 #include <linux/mm.h>
17 #include "mm.h"
20 #define _pgd_alloc(mm) kmalloc_array(PTRS_PER_PGD, sizeof(pgd_t), GFP_KERNEL | __GFP_ZERO) argument
21 #define _pgd_free(mm, pgd) kfree(pgd) argument
23 #define _pgd_alloc(mm) __pgd_alloc(mm, 2) argument
24 #define _pgd_free(mm, pgd) __pgd_free(mm, pgd) argument
30 pgd_t *pgd_alloc(struct mm_struct *mm) in pgd_alloc() argument
38 new_pgd = _pgd_alloc(mm); in pgd_alloc()
55 new_p4d = p4d_alloc(mm, new_pgd + pgd_index(MODULES_VADDR), in pgd_alloc()
60 new_pud = pud_alloc(mm, new_p4d, MODULES_VADDR); in pgd_alloc()
64 new_pmd = pmd_alloc(mm, new_pud, 0); in pgd_alloc()
89 new_p4d = p4d_alloc(mm, new_pgd, 0); in pgd_alloc()
93 new_pud = pud_alloc(mm, new_p4d, 0); in pgd_alloc()
97 new_pmd = pmd_alloc(mm, new_pud, 0); in pgd_alloc()
101 new_pte = pte_alloc_map(mm, new_pmd, 0); in pgd_alloc()
128 pmd_free(mm, new_pmd); in pgd_alloc()
129 mm_dec_nr_pmds(mm); in pgd_alloc()
131 pud_free(mm, new_pud); in pgd_alloc()
133 p4d_free(mm, new_p4d); in pgd_alloc()
135 _pgd_free(mm, new_pgd); in pgd_alloc()
140 void pgd_free(struct mm_struct *mm, pgd_t *pgd_base) in pgd_free() argument
169 pte_free(mm, pte); in pgd_free()
170 mm_dec_nr_ptes(mm); in pgd_free()
173 pmd_free(mm, pmd); in pgd_free()
174 mm_dec_nr_pmds(mm); in pgd_free()
177 pud_free(mm, pud); in pgd_free()
180 p4d_free(mm, p4d); in pgd_free()
199 pmd_free(mm, pmd); in pgd_free()
200 mm_dec_nr_pmds(mm); in pgd_free()
202 pud_free(mm, pud); in pgd_free()
203 mm_dec_nr_puds(mm); in pgd_free()
205 p4d_free(mm, p4d); in pgd_free()
208 _pgd_free(mm, pgd_base); in pgd_free()