powerpc/64: Replace CURRENT_THREAD_INFO with PACA_THREAD_INFO
authorChristophe Leroy <christophe.leroy@c-s.fr>
Sat, 12 Jan 2019 09:55:50 +0000 (09:55 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 23 Feb 2019 11:31:40 +0000 (22:31 +1100)
Now that current_thread_info is located at the beginning of 'current'
task struct, CURRENT_THREAD_INFO macro is not really needed any more.

This patch replaces it by loads of the value at PACA_THREAD_INFO(r13).

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
[mpe: Add PACA_THREAD_INFO rather than using PACACURRENT]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/exception-64s.h
arch/powerpc/include/asm/thread_info.h
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/entry_64.S
arch/powerpc/kernel/exceptions-64e.S
arch/powerpc/kernel/exceptions-64s.S
arch/powerpc/kernel/idle_book3e.S
arch/powerpc/kernel/idle_power4.S
arch/powerpc/kernel/trace/ftrace_64_mprofile.S

index 3b4767e..937bb63 100644 (file)
@@ -671,7 +671,7 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
 
 #define RUNLATCH_ON                            \
 BEGIN_FTR_SECTION                              \
-       CURRENT_THREAD_INFO(r3, r1);            \
+       ld      r3, PACA_THREAD_INFO(r13);      \
        ld      r4,TI_LOCAL_FLAGS(r3);          \
        andi.   r0,r4,_TLF_RUNLATCH;            \
        beql    ppc64_runlatch_on_trampoline;   \
@@ -721,7 +721,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_CTRL)
 #ifdef CONFIG_PPC_970_NAP
 #define FINISH_NAP                             \
 BEGIN_FTR_SECTION                              \
-       CURRENT_THREAD_INFO(r11, r1);           \
+       ld      r11, PACA_THREAD_INFO(r13);     \
        ld      r9,TI_LOCAL_FLAGS(r11);         \
        andi.   r10,r9,_TLF_NAPPING;            \
        bnel    power4_fixup_nap;               \
index c959b8d..8e1d019 100644 (file)
 
 #define THREAD_SIZE            (1 << THREAD_SHIFT)
 
-#ifdef CONFIG_PPC64
-#define CURRENT_THREAD_INFO(dest, sp)  stringify_in_c(ld dest, PACACURRENT(r13))
-#endif
-
 #ifndef __ASSEMBLY__
 #include <linux/cache.h>
 #include <asm/processor.h>
index 8b688b1..86a61e5 100644 (file)
@@ -182,6 +182,8 @@ int main(void)
        OFFSET(PACAPROCSTART, paca_struct, cpu_start);
        OFFSET(PACAKSAVE, paca_struct, kstack);
        OFFSET(PACACURRENT, paca_struct, __current);
+       DEFINE(PACA_THREAD_INFO, offsetof(struct paca_struct, __current) +
+                                offsetof(struct task_struct, thread_info));
        OFFSET(PACASAVEDMSR, paca_struct, saved_msr);
        OFFSET(PACAR1, paca_struct, saved_r1);
        OFFSET(PACATOC, paca_struct, kernel_toc);
index 21f1cb4..15c67d2 100644 (file)
@@ -166,7 +166,7 @@ system_call:                        /* label this so stack traces look sane */
        li      r10,IRQS_ENABLED
        std     r10,SOFTE(r1)
 
-       CURRENT_THREAD_INFO(r11, r1)
+       ld      r11, PACA_THREAD_INFO(r13)
        ld      r10,TI_FLAGS(r11)
        andi.   r11,r10,_TIF_SYSCALL_DOTRACE
        bne     .Lsyscall_dotrace               /* does not return */
@@ -213,7 +213,7 @@ system_call:                        /* label this so stack traces look sane */
        ld      r3,RESULT(r1)
 #endif
 
-       CURRENT_THREAD_INFO(r12, r1)
+       ld      r12, PACA_THREAD_INFO(r13)
 
        ld      r8,_MSR(r1)
 #ifdef CONFIG_PPC_BOOK3S
@@ -346,7 +346,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
 
        /* Repopulate r9 and r10 for the syscall path */
        addi    r9,r1,STACK_FRAME_OVERHEAD
-       CURRENT_THREAD_INFO(r10, r1)
+       ld      r10, PACA_THREAD_INFO(r13)
        ld      r10,TI_FLAGS(r10)
 
        cmpldi  r0,NR_syscalls
@@ -740,7 +740,7 @@ _GLOBAL(ret_from_except_lite)
        mtmsrd  r10,1             /* Update machine state */
 #endif /* CONFIG_PPC_BOOK3E */
 
-       CURRENT_THREAD_INFO(r9, r1)
+       ld      r9, PACA_THREAD_INFO(r13)
        ld      r3,_MSR(r1)
 #ifdef CONFIG_PPC_BOOK3E
        ld      r10,PACACURRENT(r13)
@@ -854,7 +854,7 @@ resume_kernel:
 1:     bl      preempt_schedule_irq
 
        /* Re-test flags and eventually loop */
-       CURRENT_THREAD_INFO(r9, r1)
+       ld      r9, PACA_THREAD_INFO(r13)
        ld      r4,TI_FLAGS(r9)
        andi.   r0,r4,_TIF_NEED_RESCHED
        bne     1b
index 20f1499..4549ce8 100644 (file)
@@ -493,7 +493,7 @@ exc_##n##_bad_stack:                                                            \
  * interrupts happen before the wait instruction.
  */
 #define CHECK_NAPPING()                                                        \
-       CURRENT_THREAD_INFO(r11, r1);                                   \
+       ld      r11, PACA_THREAD_INFO(r13);                             \
        ld      r10,TI_LOCAL_FLAGS(r11);                                \
        andi.   r9,r10,_TLF_NAPPING;                                    \
        beq+    1f;                                                     \
index 9e253ce..b179b8b 100644 (file)
@@ -1629,7 +1629,7 @@ do_hash_page:
        ori     r0,r0,DSISR_BAD_FAULT_64S@l
        and.    r0,r4,r0                /* weird error? */
        bne-    handle_page_fault       /* if not, try to insert a HPTE */
-       CURRENT_THREAD_INFO(r11, r1)
+       ld      r11, PACA_THREAD_INFO(r13)
        lwz     r0,TI_PREEMPT(r11)      /* If we're in an "NMI" */
        andis.  r0,r0,NMI_MASK@h        /* (i.e. an irq when soft-disabled) */
        bne     77f                     /* then don't call hash_page now */
index 4e0d94d..31e732c 100644 (file)
@@ -63,7 +63,7 @@ _GLOBAL(\name)
 1:     /* Let's set the _TLF_NAPPING flag so interrupts make us return
         * to the right spot
        */
-       CURRENT_THREAD_INFO(r11, r1)
+       ld      r11, PACACURRENT(r13)
        ld      r10,TI_LOCAL_FLAGS(r11)
        ori     r10,r10,_TLF_NAPPING
        std     r10,TI_LOCAL_FLAGS(r11)
index a09b3c7..a2fdb0a 100644 (file)
@@ -68,7 +68,7 @@ BEGIN_FTR_SECTION
        DSSALL
        sync
 END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
-       CURRENT_THREAD_INFO(r9, r1)
+       ld      r9, PACA_THREAD_INFO(r13)
        ld      r8,TI_LOCAL_FLAGS(r9)   /* set napping bit */
        ori     r8,r8,_TLF_NAPPING      /* so when we take an exception */
        std     r8,TI_LOCAL_FLAGS(r9)   /* it will return to our caller */
index 32476a6..01b1224 100644 (file)
@@ -229,7 +229,7 @@ ftrace_call:
         *  - r0, r11 & r12 are free
         */
 livepatch_handler:
-       CURRENT_THREAD_INFO(r12, r1)
+       ld      r12, PACA_THREAD_INFO(r13)
 
        /* Allocate 3 x 8 bytes */
        ld      r11, TI_livepatch_sp(r12)
@@ -256,7 +256,7 @@ livepatch_handler:
         * restore it.
         */
 
-       CURRENT_THREAD_INFO(r12, r1)
+       ld      r12, PACA_THREAD_INFO(r13)
 
        ld      r11, TI_livepatch_sp(r12)
 
@@ -273,7 +273,7 @@ livepatch_handler:
        ld      r2,  -24(r11)
 
        /* Pop livepatch stack frame */
-       CURRENT_THREAD_INFO(r12, r1)
+       ld      r12, PACA_THREAD_INFO(r13)
        subi    r11, r11, 24
        std     r11, TI_livepatch_sp(r12)