x86/mm: Make PGDIR_SHIFT and PTRS_PER_P4D variable
[linux-2.6-microblaze.git] / arch / x86 / include / asm / pgtable_64_types.h
index 903e4d0..0c48d80 100644 (file)
@@ -26,6 +26,9 @@ extern unsigned int pgtable_l5_enabled;
 #define pgtable_l5_enabled 0
 #endif
 
+extern unsigned int pgdir_shift;
+extern unsigned int ptrs_per_p4d;
+
 #endif /* !__ASSEMBLY__ */
 
 #define SHARED_KERNEL_PMD      0
@@ -35,16 +38,17 @@ extern unsigned int pgtable_l5_enabled;
 /*
  * PGDIR_SHIFT determines what a top-level page table entry can map
  */
-#define PGDIR_SHIFT    48
+#define PGDIR_SHIFT    pgdir_shift
 #define PTRS_PER_PGD   512
 
 /*
  * 4th level page in 5-level paging case
  */
-#define P4D_SHIFT      39
-#define PTRS_PER_P4D   512
-#define P4D_SIZE       (_AC(1, UL) << P4D_SHIFT)
-#define P4D_MASK       (~(P4D_SIZE - 1))
+#define P4D_SHIFT              39
+#define MAX_PTRS_PER_P4D       512
+#define PTRS_PER_P4D           ptrs_per_p4d
+#define P4D_SIZE               (_AC(1, UL) << P4D_SHIFT)
+#define P4D_MASK               (~(P4D_SIZE - 1))
 
 #define MAX_POSSIBLE_PHYSMEM_BITS      52
 
@@ -53,8 +57,9 @@ extern unsigned int pgtable_l5_enabled;
 /*
  * PGDIR_SHIFT determines what a top-level page table entry can map
  */
-#define PGDIR_SHIFT    39
-#define PTRS_PER_PGD   512
+#define PGDIR_SHIFT            39
+#define PTRS_PER_PGD           512
+#define MAX_PTRS_PER_P4D       1
 
 #endif /* CONFIG_X86_5LEVEL */