linux/arch/mips/mm/pgtable.c
<<
>>
Prefs
   1/*
   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
   4 * for more details.
   5 */
   6#include <linux/export.h>
   7#include <linux/mm.h>
   8#include <linux/string.h>
   9#include <asm/pgalloc.h>
  10
  11pgd_t *pgd_alloc(struct mm_struct *mm)
  12{
  13        pgd_t *ret, *init;
  14
  15        ret = (pgd_t *) __get_free_pages(GFP_KERNEL, PGD_ORDER);
  16        if (ret) {
  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));
  21        }
  22
  23        return ret;
  24}
  25EXPORT_SYMBOL_GPL(pgd_alloc);
  26