diff options
Diffstat (limited to 'arch/powerpc/mm/slb.c')
-rw-r--r-- | arch/powerpc/mm/slb.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c index cf8705e32d60..89497fb04280 100644 --- a/arch/powerpc/mm/slb.c +++ b/arch/powerpc/mm/slb.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <asm/udbg.h> | 28 | #include <asm/udbg.h> |
29 | 29 | ||
30 | #ifdef DEBUG | 30 | #ifdef DEBUG |
31 | #define DBG(fmt...) udbg_printf(fmt) | 31 | #define DBG(fmt...) printk(fmt) |
32 | #else | 32 | #else |
33 | #define DBG pr_debug | 33 | #define DBG pr_debug |
34 | #endif | 34 | #endif |
@@ -263,13 +263,19 @@ void slb_initialize(void) | |||
263 | extern unsigned int *slb_miss_kernel_load_linear; | 263 | extern unsigned int *slb_miss_kernel_load_linear; |
264 | extern unsigned int *slb_miss_kernel_load_io; | 264 | extern unsigned int *slb_miss_kernel_load_io; |
265 | extern unsigned int *slb_compare_rr_to_size; | 265 | extern unsigned int *slb_compare_rr_to_size; |
266 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | ||
267 | extern unsigned int *slb_miss_kernel_load_vmemmap; | ||
268 | unsigned long vmemmap_llp; | ||
269 | #endif | ||
266 | 270 | ||
267 | /* Prepare our SLB miss handler based on our page size */ | 271 | /* Prepare our SLB miss handler based on our page size */ |
268 | linear_llp = mmu_psize_defs[mmu_linear_psize].sllp; | 272 | linear_llp = mmu_psize_defs[mmu_linear_psize].sllp; |
269 | io_llp = mmu_psize_defs[mmu_io_psize].sllp; | 273 | io_llp = mmu_psize_defs[mmu_io_psize].sllp; |
270 | vmalloc_llp = mmu_psize_defs[mmu_vmalloc_psize].sllp; | 274 | vmalloc_llp = mmu_psize_defs[mmu_vmalloc_psize].sllp; |
271 | get_paca()->vmalloc_sllp = SLB_VSID_KERNEL | vmalloc_llp; | 275 | get_paca()->vmalloc_sllp = SLB_VSID_KERNEL | vmalloc_llp; |
272 | 276 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | |
277 | vmemmap_llp = mmu_psize_defs[mmu_vmemmap_psize].sllp; | ||
278 | #endif | ||
273 | if (!slb_encoding_inited) { | 279 | if (!slb_encoding_inited) { |
274 | slb_encoding_inited = 1; | 280 | slb_encoding_inited = 1; |
275 | patch_slb_encoding(slb_miss_kernel_load_linear, | 281 | patch_slb_encoding(slb_miss_kernel_load_linear, |
@@ -281,6 +287,12 @@ void slb_initialize(void) | |||
281 | 287 | ||
282 | DBG("SLB: linear LLP = %04lx\n", linear_llp); | 288 | DBG("SLB: linear LLP = %04lx\n", linear_llp); |
283 | DBG("SLB: io LLP = %04lx\n", io_llp); | 289 | DBG("SLB: io LLP = %04lx\n", io_llp); |
290 | |||
291 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | ||
292 | patch_slb_encoding(slb_miss_kernel_load_vmemmap, | ||
293 | SLB_VSID_KERNEL | vmemmap_llp); | ||
294 | DBG("SLB: vmemmap LLP = %04lx\n", vmemmap_llp); | ||
295 | #endif | ||
284 | } | 296 | } |
285 | 297 | ||
286 | get_paca()->stab_rr = SLB_NUM_BOLTED; | 298 | get_paca()->stab_rr = SLB_NUM_BOLTED; |