diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2005-08-05 05:39:06 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-08-28 20:53:31 -0400 |
commit | e28f7faf05159f1cfd564596f5e6178edba6bd49 (patch) | |
tree | 45534d2c33bff8b64e3fd155fba55146cb7518e6 /include/asm-ppc64/mmu.h | |
parent | decd300b30e499fe6be1bbfc5650fc971de8c1fa (diff) |
[PATCH] Four level pagetables for ppc64
Implement 4-level pagetables for ppc64
This patch implements full four-level page tables for ppc64, thereby
extending the usable user address range to 44 bits (16T).
The patch uses a full page for the tables at the bottom and top level,
and a quarter page for the intermediate levels. It uses full 64-bit
pointers at every level, thus also increasing the addressable range of
physical memory. This patch also tweaks the VSID allocation to allow
matching range for user addresses (this halves the number of available
contexts) and adds some #if and BUILD_BUG sanity checks.
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include/asm-ppc64/mmu.h')
-rw-r--r-- | include/asm-ppc64/mmu.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/include/asm-ppc64/mmu.h b/include/asm-ppc64/mmu.h index 70348a851313..959a4bfdcd6a 100644 --- a/include/asm-ppc64/mmu.h +++ b/include/asm-ppc64/mmu.h | |||
@@ -259,8 +259,10 @@ extern void stabs_alloc(void); | |||
259 | #define VSID_BITS 36 | 259 | #define VSID_BITS 36 |
260 | #define VSID_MODULUS ((1UL<<VSID_BITS)-1) | 260 | #define VSID_MODULUS ((1UL<<VSID_BITS)-1) |
261 | 261 | ||
262 | #define CONTEXT_BITS 20 | 262 | #define CONTEXT_BITS 19 |
263 | #define USER_ESID_BITS 15 | 263 | #define USER_ESID_BITS 16 |
264 | |||
265 | #define USER_VSID_RANGE (1UL << (USER_ESID_BITS + SID_SHIFT)) | ||
264 | 266 | ||
265 | /* | 267 | /* |
266 | * This macro generates asm code to compute the VSID scramble | 268 | * This macro generates asm code to compute the VSID scramble |
@@ -302,7 +304,6 @@ typedef unsigned long mm_context_id_t; | |||
302 | typedef struct { | 304 | typedef struct { |
303 | mm_context_id_t id; | 305 | mm_context_id_t id; |
304 | #ifdef CONFIG_HUGETLB_PAGE | 306 | #ifdef CONFIG_HUGETLB_PAGE |
305 | pgd_t *huge_pgdir; | ||
306 | u16 htlb_segs; /* bitmask */ | 307 | u16 htlb_segs; /* bitmask */ |
307 | #endif | 308 | #endif |
308 | } mm_context_t; | 309 | } mm_context_t; |