diff options
author | Joakim Tjernlund <joakim.tjernlund@transmode.se> | 2010-03-02 00:37:10 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-04-07 04:00:32 -0400 |
commit | 4afb0be7ccda0ca551cc37572bab74ba4a3c18dd (patch) | |
tree | 852580b5d5e7376ba8e50a18235fdf9272e72489 | |
parent | fe1691e3f49d41452832f5aee2b952bd201ccab1 (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>
-rw-r--r-- | arch/powerpc/kernel/head_8xx.S | 4 |
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 |
326 | 3: | 329 | 3: |
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 */ |