[PATCH] powerpc: Fix 64k pages on non-partitioned machines
The page size encoding passed to tlbie is incorrect for new-style large pages. This fixes it. This doesn't affect anything on older machines because mmu_psize_defs[psize].penc (the page size encoding) is 0 for 4k and 16M pages (the two are distinguished by a separate "is a large page" bit). Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
f53ae1dc34
commit
19242b2407
1 changed files with 2 additions and 2 deletions
|
@ -52,7 +52,7 @@ static inline void __tlbie(unsigned long va, unsigned int psize)
|
||||||
default:
|
default:
|
||||||
penc = mmu_psize_defs[psize].penc;
|
penc = mmu_psize_defs[psize].penc;
|
||||||
va &= ~((1ul << mmu_psize_defs[psize].shift) - 1);
|
va &= ~((1ul << mmu_psize_defs[psize].shift) - 1);
|
||||||
va |= (0x7f >> (8 - penc)) << 12;
|
va |= penc << 12;
|
||||||
asm volatile("tlbie %0,1" : : "r" (va) : "memory");
|
asm volatile("tlbie %0,1" : : "r" (va) : "memory");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ static inline void __tlbiel(unsigned long va, unsigned int psize)
|
||||||
default:
|
default:
|
||||||
penc = mmu_psize_defs[psize].penc;
|
penc = mmu_psize_defs[psize].penc;
|
||||||
va &= ~((1ul << mmu_psize_defs[psize].shift) - 1);
|
va &= ~((1ul << mmu_psize_defs[psize].shift) - 1);
|
||||||
va |= (0x7f >> (8 - penc)) << 12;
|
va |= penc << 12;
|
||||||
asm volatile(".long 0x7c000224 | (%0 << 11) | (1 << 21)"
|
asm volatile(".long 0x7c000224 | (%0 << 11) | (1 << 21)"
|
||||||
: : "r"(va) : "memory");
|
: : "r"(va) : "memory");
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue