forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-09 244b2c5ca8b14627e4a17755e5922221e121c771
kernel/arch/nds32/mm/mm-nds32.c
....@@ -2,6 +2,8 @@
22 // Copyright (C) 2005-2017 Andes Technology Corporation
33
44 #include <linux/init_task.h>
5
+
6
+#define __HAVE_ARCH_PGD_FREE
57 #include <asm/pgalloc.h>
68
79 #define FIRST_KERNEL_PGD_NR (USER_PTRS_PER_PGD)
....@@ -74,6 +76,8 @@
7476 {
7577 unsigned long pmdval;
7678 pgd_t *pgd;
79
+ p4d_t *p4d;
80
+ pud_t *pud;
7781 pmd_t *pmd;
7882 int i;
7983
....@@ -84,7 +88,9 @@
8488
8589 for (i = 0; i < USER_PTRS_PER_PGD; i++) {
8690 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);
8894 set_pmd(pmd, __pmd(pmdval));
8995 }
9096 }