aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/head_8xx.S
diff options
context:
space:
mode:
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>2010-03-02 00:37:10 -0500
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2010-04-07 04:00:32 -0400
commit4afb0be7ccda0ca551cc37572bab74ba4a3c18dd (patch)
tree852580b5d5e7376ba8e50a18235fdf9272e72489 /arch/powerpc/kernel/head_8xx.S
parentfe1691e3f49d41452832f5aee2b952bd201ccab1 (diff)
powerpc/8xx: Avoid testing for kernel space in ITLB Miss.
Only modules will cause ITLB Misses as we always pin the first 8MB of kernel memory. Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/head_8xx.S')
-rw-r--r--arch/powerpc/kernel/head_8xx.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index ecc4a02277e3..84ca1d9b9ed3 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -318,12 +318,16 @@ InstructionTLBMiss:
318 /* If we are faulting a kernel address, we have to use the 318 /* If we are faulting a kernel address, we have to use the
319 * kernel page tables. 319 * kernel page tables.
320 */ 320 */
321#ifdef CONFIG_MODULES
322 /* Only modules will cause ITLB Misses as we always
323 * pin the first 8MB of kernel memory */
321 andi. r11, r10, 0x0800 /* Address >= 0x80000000 */ 324 andi. r11, r10, 0x0800 /* Address >= 0x80000000 */
322 beq 3f 325 beq 3f
323 lis r11, swapper_pg_dir@h 326 lis r11, swapper_pg_dir@h
324 ori r11, r11, swapper_pg_dir@l 327 ori r11, r11, swapper_pg_dir@l
325 rlwimi r10, r11, 0, 2, 19 328 rlwimi r10, r11, 0, 2, 19
3263: 3293:
330#endif
327 lwz r11, 0(r10) /* Get the level 1 entry */ 331 lwz r11, 0(r10) /* Get the level 1 entry */
328 rlwinm. r10, r11,0,0,19 /* Extract page descriptor page address */ 332 rlwinm. r10, r11,0,0,19 /* Extract page descriptor page address */
329 beq 2f /* If zero, don't try to find a pte */ 333 beq 2f /* If zero, don't try to find a pte */