8xx sometimes need to load a invalid/non-present TLBs in
it DTLB asm handler.
These must be invalidated separately as 8xx MMU don't.

Signed-off-by: Joakim Tjernlund <joakim.tjernl...@transmode.se>
---
 arch/ppc/kernel/head_8xx.S |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/arch/ppc/kernel/head_8xx.S b/arch/ppc/kernel/head_8xx.S
index 57858ce..b3aff21 100644
--- a/arch/ppc/kernel/head_8xx.S
+++ b/arch/ppc/kernel/head_8xx.S
@@ -221,7 +221,11 @@ DataAccess:
        mr      r5,r20
        mfspr   r4,DAR
        stw     r4,_DAR(r21)
-       li      r20,0x00f0
+       /* invalidate ~PRESENT TLBs, 8xx MMU don't do this */
+       andis.  r20,r5,0x4000
+       beq+    1f
+       tlbie   r4
+1:     li      r20,0x00f0
        mtspr   DAR,r20 /* Tag DAR */
        addi    r3,r1,STACK_FRAME_OVERHEAD
        li      r20,MSR_KERNEL
@@ -238,7 +242,11 @@ InstructionAccess:
        addi    r3,r1,STACK_FRAME_OVERHEAD
        mr      r4,r22
        mr      r5,r23
-       li      r20,MSR_KERNEL
+       /* invalidate ~PRESENT TLBs, 8xx MMU don't do this */
+       andis.  r20,r5,0x4000
+       beq+    1f
+       tlbie   r4
+1:     li      r20,MSR_KERNEL
        rlwimi  r20,r23,0,16,16         /* copy EE bit from saved MSR */
        FINISH_EXCEPTION(do_page_fault)
 
-- 
1.7.3.4

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to