This saves a few cycles, at least on e5500.

Signed-off-by: Scott Wood <scottw...@freescale.com>
---
 arch/powerpc/include/asm/exception-64e.h |   16 +++++++---------
 arch/powerpc/kernel/paca.c               |    5 +++++
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/arch/powerpc/include/asm/exception-64e.h 
b/arch/powerpc/include/asm/exception-64e.h
index 6d53f31..6921261 100644
--- a/arch/powerpc/include/asm/exception-64e.h
+++ b/arch/powerpc/include/asm/exception-64e.h
@@ -62,16 +62,14 @@
 #define EX_TLB_ESR     ( 9 * 8) /* Level 0 and 2 only */
 #define EX_TLB_SRR0    (10 * 8)
 #define EX_TLB_SRR1    (11 * 8)
-#define EX_TLB_MMUCR0  (12 * 8) /* Level 0 */
-#define EX_TLB_MAS1    (12 * 8) /* Level 0 */
-#define EX_TLB_MAS2    (13 * 8) /* Level 0 */
+#define EX_TLB_PACA    (12 * 8)
 #ifdef CONFIG_BOOK3E_MMU_TLB_STATS
-#define EX_TLB_R8      (14 * 8)
-#define EX_TLB_R9      (15 * 8)
-#define EX_TLB_LR      (16 * 8)
-#define EX_TLB_SIZE    (17 * 8)
+#define EX_TLB_R8      (13 * 8)
+#define EX_TLB_R9      (14 * 8)
+#define EX_TLB_LR      (15 * 8)
+#define EX_TLB_SIZE    (16 * 8)
 #else
-#define EX_TLB_SIZE    (14 * 8)
+#define EX_TLB_SIZE    (13 * 8)
 #endif
 
 #define        START_EXCEPTION(label)                                          
\
@@ -98,7 +96,7 @@ exc_##label##_book3e:
        std     r11,EX_TLB_R11(r12);                                        \
        mfspr   r11,SPRN_SPRG_TLB_SCRATCH;                                  \
        std     r13,EX_TLB_R13(r12);                                        \
-       mfspr   r13,SPRN_SPRG_PACA;                                         \
+       ld      r13,EX_TLB_PACA(r12);                                       \
        std     r14,EX_TLB_R14(r12);                                        \
        addi    r14,r12,EX_TLB_SIZE;                                        \
        std     r15,EX_TLB_R15(r12);                                        \
diff --git a/arch/powerpc/kernel/paca.c b/arch/powerpc/kernel/paca.c
index 102244e..814dae2 100644
--- a/arch/powerpc/kernel/paca.c
+++ b/arch/powerpc/kernel/paca.c
@@ -151,6 +151,11 @@ void __init initialise_paca(struct paca_struct *new_paca, 
int cpu)
 #ifdef CONFIG_PPC_STD_MMU_64
        new_paca->slb_shadow_ptr = &slb_shadow[cpu];
 #endif /* CONFIG_PPC_STD_MMU_64 */
+#ifdef CONFIG_PPC_BOOK3E
+       new_paca->extlb[0][EX_TLB_PACA / 8] = (u64)new_paca;
+       new_paca->extlb[1][EX_TLB_PACA / 8] = (u64)new_paca;
+       new_paca->extlb[2][EX_TLB_PACA / 8] = (u64)new_paca;
+#endif
 }
 
 /* Put the paca pointer into r13 and SPRG_PACA */
-- 
1.7.4.1


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

Reply via email to