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
)
13 pgd_t
*init
, *ret
= NULL
;
14 struct ptdesc
*ptdesc
= pagetable_alloc(GFP_KERNEL
& ~__GFP_HIGHMEM
,
18 ret
= ptdesc_address(ptdesc
);
19 init
= pgd_offset(&init_mm
, 0UL);
21 memcpy(ret
+ USER_PTRS_PER_PGD
, init
+ USER_PTRS_PER_PGD
,
22 (PTRS_PER_PGD
- USER_PTRS_PER_PGD
) * sizeof(pgd_t
));
27 EXPORT_SYMBOL_GPL(pgd_alloc
);