| .. | .. |
|---|
| 2 | 2 | // Copyright (C) 2005-2017 Andes Technology Corporation |
|---|
| 3 | 3 | |
|---|
| 4 | 4 | #include <linux/init_task.h> |
|---|
| 5 | + |
|---|
| 6 | +#define __HAVE_ARCH_PGD_FREE |
|---|
| 5 | 7 | #include <asm/pgalloc.h> |
|---|
| 6 | 8 | |
|---|
| 7 | 9 | #define FIRST_KERNEL_PGD_NR (USER_PTRS_PER_PGD) |
|---|
| .. | .. |
|---|
| 74 | 76 | { |
|---|
| 75 | 77 | unsigned long pmdval; |
|---|
| 76 | 78 | pgd_t *pgd; |
|---|
| 79 | + p4d_t *p4d; |
|---|
| 80 | + pud_t *pud; |
|---|
| 77 | 81 | pmd_t *pmd; |
|---|
| 78 | 82 | int i; |
|---|
| 79 | 83 | |
|---|
| .. | .. |
|---|
| 84 | 88 | |
|---|
| 85 | 89 | for (i = 0; i < USER_PTRS_PER_PGD; i++) { |
|---|
| 86 | 90 | pmdval = (i << PGDIR_SHIFT); |
|---|
| 87 | | - pmd = pmd_offset(pgd + i, i << PGDIR_SHIFT); |
|---|
| 91 | + p4d = p4d_offset(pgd, i << PGDIR_SHIFT); |
|---|
| 92 | + pud = pud_offset(p4d, i << PGDIR_SHIFT); |
|---|
| 93 | + pmd = pmd_offset(pud + i, i << PGDIR_SHIFT); |
|---|
| 88 | 94 | set_pmd(pmd, __pmd(pmdval)); |
|---|
| 89 | 95 | } |
|---|
| 90 | 96 | } |
|---|