diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-04-14 18:32:02 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2011-04-26 23:02:10 -0400 |
commit | bd491781097f150687906008d639936a0c00ed90 (patch) | |
tree | 96a6926005c6765724fce93b0b27e504cd0172df /arch/powerpc/mm | |
parent | 76b4eda866c4936af8d696f040abea56bf688e16 (diff) |
powerpc: Add TLB size detection for TYPE_3E MMUs
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/mmu_context_nohash.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/powerpc/mm/mmu_context_nohash.c b/arch/powerpc/mm/mmu_context_nohash.c index 4d8fa911c73d..336807de550e 100644 --- a/arch/powerpc/mm/mmu_context_nohash.c +++ b/arch/powerpc/mm/mmu_context_nohash.c | |||
@@ -409,7 +409,17 @@ void __init mmu_context_init(void) | |||
409 | } else if (mmu_has_feature(MMU_FTR_TYPE_47x)) { | 409 | } else if (mmu_has_feature(MMU_FTR_TYPE_47x)) { |
410 | first_context = 1; | 410 | first_context = 1; |
411 | last_context = 65535; | 411 | last_context = 65535; |
412 | } else { | 412 | } else |
413 | #ifdef CONFIG_PPC_BOOK3E_MMU | ||
414 | if (mmu_has_feature(MMU_FTR_TYPE_3E)) { | ||
415 | u32 mmucfg = mfspr(SPRN_MMUCFG); | ||
416 | u32 pid_bits = (mmucfg & MMUCFG_PIDSIZE_MASK) | ||
417 | >> MMUCFG_PIDSIZE_SHIFT; | ||
418 | first_context = 1; | ||
419 | last_context = (1UL << (pid_bits + 1)) - 1; | ||
420 | } else | ||
421 | #endif | ||
422 | { | ||
413 | first_context = 1; | 423 | first_context = 1; |
414 | last_context = 255; | 424 | last_context = 255; |
415 | } | 425 | } |