diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-07-27 21:59:34 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-08-19 20:25:06 -0400 |
commit | 57e2a99f74b0d3720c97a6aadb57ae6aad3c61ea (patch) | |
tree | 4268a98ad222dbcf790749aed52417eb0a3a2a35 /arch/powerpc/include/asm/page_64.h | |
parent | 0257c99cdfaca53a881339e1cbca638c61569b05 (diff) |
powerpc: Add memory management headers for new 64-bit BookE
This adds the PTE and pgtable format definitions, along with changes
to the kernel memory map and other definitions related to implementing
support for 64-bit Book3E. This also shields some asm-offset bits that
are currently only relevant on 32-bit
We also move the definition of the "linux" page size constants to
the common mmu.h file and add a few sizes that are relevant to
embedded processors.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/include/asm/page_64.h')
-rw-r--r-- | arch/powerpc/include/asm/page_64.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h index 5817a3b747e5..3f17b83f55a1 100644 --- a/arch/powerpc/include/asm/page_64.h +++ b/arch/powerpc/include/asm/page_64.h | |||
@@ -135,12 +135,22 @@ extern void slice_set_range_psize(struct mm_struct *mm, unsigned long start, | |||
135 | #endif /* __ASSEMBLY__ */ | 135 | #endif /* __ASSEMBLY__ */ |
136 | #else | 136 | #else |
137 | #define slice_init() | 137 | #define slice_init() |
138 | #ifdef CONFIG_PPC_STD_MMU_64 | ||
138 | #define get_slice_psize(mm, addr) ((mm)->context.user_psize) | 139 | #define get_slice_psize(mm, addr) ((mm)->context.user_psize) |
139 | #define slice_set_user_psize(mm, psize) \ | 140 | #define slice_set_user_psize(mm, psize) \ |
140 | do { \ | 141 | do { \ |
141 | (mm)->context.user_psize = (psize); \ | 142 | (mm)->context.user_psize = (psize); \ |
142 | (mm)->context.sllp = SLB_VSID_USER | mmu_psize_defs[(psize)].sllp; \ | 143 | (mm)->context.sllp = SLB_VSID_USER | mmu_psize_defs[(psize)].sllp; \ |
143 | } while (0) | 144 | } while (0) |
145 | #else /* CONFIG_PPC_STD_MMU_64 */ | ||
146 | #ifdef CONFIG_PPC_64K_PAGES | ||
147 | #define get_slice_psize(mm, addr) MMU_PAGE_64K | ||
148 | #else /* CONFIG_PPC_64K_PAGES */ | ||
149 | #define get_slice_psize(mm, addr) MMU_PAGE_4K | ||
150 | #endif /* !CONFIG_PPC_64K_PAGES */ | ||
151 | #define slice_set_user_psize(mm, psize) do { BUG(); } while(0) | ||
152 | #endif /* !CONFIG_PPC_STD_MMU_64 */ | ||
153 | |||
144 | #define slice_set_range_psize(mm, start, len, psize) \ | 154 | #define slice_set_range_psize(mm, start, len, psize) \ |
145 | slice_set_user_psize((mm), (psize)) | 155 | slice_set_user_psize((mm), (psize)) |
146 | #define slice_mm_new_context(mm) 1 | 156 | #define slice_mm_new_context(mm) 1 |