2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
6 #include <linux/export.h>
8 #include <linux/string.h>
9 #include <asm/pgalloc.h>
11 pgd_t
*pgd_alloc(struct mm_struct
*mm
)
15 ret
= (pgd_t
*) __get_free_pages(GFP_KERNEL
, PGD_ORDER
);
17 init
= pgd_offset(&init_mm
, 0UL);
18 pgd_init((unsigned long)ret
);
19 memcpy(ret
+ USER_PTRS_PER_PGD
, init
+ USER_PTRS_PER_PGD
,
20 (PTRS_PER_PGD
- USER_PTRS_PER_PGD
) * sizeof(pgd_t
));
25 EXPORT_SYMBOL_GPL(pgd_alloc
);