aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-ppc64/mmu.h
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2005-08-05 05:39:06 -0400
committerPaul Mackerras <paulus@samba.org>2005-08-28 20:53:31 -0400
commite28f7faf05159f1cfd564596f5e6178edba6bd49 (patch)
tree45534d2c33bff8b64e3fd155fba55146cb7518e6 /include/asm-ppc64/mmu.h
parentdecd300b30e499fe6be1bbfc5650fc971de8c1fa (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.h7
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;
302typedef struct { 304typedef 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;