Skip to content

Commit f7354cc

Browse files
chleroympe
authored andcommitted
powerpc/32: Remove CURRENT_THREAD_INFO and rename TI_CPU
Now that thread_info is similar to task_struct, its address is in r2 so CURRENT_THREAD_INFO() macro is useless. This patch removes it. This patch also moves the 'tovirt(r2, r2)' down just before the reactivation of MMU translation, so that we keep the physical address of 'current' in r2 until then. It avoids a few calls to tophys(). At the same time, as the 'cpu' field is not anymore in thread_info, TI_CPU is renamed TASK_CPU by this patch. It also allows to get rid of a couple of '#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE' as ACCOUNT_CPU_USER_ENTRY() and ACCOUNT_CPU_USER_EXIT() are empty when CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not defined. Signed-off-by: Christophe Leroy <[email protected]> [mpe: Fix a missed conversion of TI_CPU idle_6xx.S] Signed-off-by: Michael Ellerman <[email protected]>
1 parent 7c19c2e commit f7354cc

File tree

11 files changed

+37
-72
lines changed

11 files changed

+37
-72
lines changed

arch/powerpc/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ ifdef CONFIG_SMP
431431
prepare: task_cpu_prepare
432432

433433
task_cpu_prepare: prepare0
434-
$(eval KBUILD_CFLAGS += -D_TASK_CPU=$(shell awk '{if ($$2 == "TI_CPU") print $$3;}' include/generated/asm-offsets.h))
434+
$(eval KBUILD_CFLAGS += -D_TASK_CPU=$(shell awk '{if ($$2 == "TASK_CPU") print $$3;}' include/generated/asm-offsets.h))
435435
endif
436436

437437
# Check toolchain versions:

arch/powerpc/include/asm/thread_info.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919

2020
#ifdef CONFIG_PPC64
2121
#define CURRENT_THREAD_INFO(dest, sp) stringify_in_c(ld dest, PACACURRENT(r13))
22-
#else
23-
#define CURRENT_THREAD_INFO(dest, sp) stringify_in_c(mr dest, r2)
2422
#endif
2523

2624
#ifndef __ASSEMBLY__

arch/powerpc/kernel/asm-offsets.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ int main(void)
9999
#endif /* CONFIG_PPC64 */
100100
OFFSET(TASK_STACK, task_struct, stack);
101101
#ifdef CONFIG_SMP
102-
OFFSET(TI_CPU, task_struct, cpu);
102+
OFFSET(TASK_CPU, task_struct, cpu);
103103
#endif
104104

105105
#ifdef CONFIG_LIVEPATCH

arch/powerpc/kernel/entry_32.S

Lines changed: 18 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ transfer_to_handler:
151151
stw r2,_XER(r11)
152152
mfspr r12,SPRN_SPRG_THREAD
153153
addi r2,r12,-THREAD
154-
tovirt(r2,r2) /* set r2 to current */
155154
beq 2f /* if from user, fix up THREAD.regs */
156155
addi r11,r1,STACK_FRAME_OVERHEAD
157156
stw r11,PT_REGS(r12)
@@ -161,11 +160,7 @@ transfer_to_handler:
161160
lwz r12,THREAD_DBCR0(r12)
162161
andis. r12,r12,DBCR0_IDM@h
163162
#endif
164-
#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
165-
CURRENT_THREAD_INFO(r9, r1)
166-
tophys(r9, r9)
167-
ACCOUNT_CPU_USER_ENTRY(r9, r11, r12)
168-
#endif
163+
ACCOUNT_CPU_USER_ENTRY(r2, r11, r12)
169164
#if defined(CONFIG_40x) || defined(CONFIG_BOOKE)
170165
beq+ 3f
171166
/* From user and task is ptraced - load up global dbcr0 */
@@ -175,8 +170,7 @@ transfer_to_handler:
175170
tophys(r11,r11)
176171
addi r11,r11,global_dbcr0@l
177172
#ifdef CONFIG_SMP
178-
CURRENT_THREAD_INFO(r9, r1)
179-
lwz r9,TI_CPU(r9)
173+
lwz r9,TASK_CPU(r2)
180174
slwi r9,r9,3
181175
add r11,r11,r9
182176
#endif
@@ -197,9 +191,7 @@ transfer_to_handler:
197191
ble- stack_ovf /* then the kernel stack overflowed */
198192
5:
199193
#if defined(CONFIG_PPC_BOOK3S_32) || defined(CONFIG_E500)
200-
CURRENT_THREAD_INFO(r9, r1)
201-
tophys(r9,r9) /* check local flags */
202-
lwz r12,TI_LOCAL_FLAGS(r9)
194+
lwz r12,TI_LOCAL_FLAGS(r2)
203195
mtcrf 0x01,r12
204196
bt- 31-TLF_NAPPING,4f
205197
bt- 31-TLF_SLEEPING,7f
@@ -208,6 +200,7 @@ transfer_to_handler:
208200
transfer_to_handler_cont:
209201
3:
210202
mflr r9
203+
tovirt(r2, r2) /* set r2 to current */
211204
lwz r11,0(r9) /* virtual address of handler */
212205
lwz r9,4(r9) /* where to go when done */
213206
#if defined(CONFIG_PPC_8xx) && defined(CONFIG_PERF_EVENTS)
@@ -271,11 +264,11 @@ reenable_mmu: /* re-enable mmu so we can */
271264

272265
#if defined (CONFIG_PPC_BOOK3S_32) || defined(CONFIG_E500)
273266
4: rlwinm r12,r12,0,~_TLF_NAPPING
274-
stw r12,TI_LOCAL_FLAGS(r9)
267+
stw r12,TI_LOCAL_FLAGS(r2)
275268
b power_save_ppc32_restore
276269

277270
7: rlwinm r12,r12,0,~_TLF_SLEEPING
278-
stw r12,TI_LOCAL_FLAGS(r9)
271+
stw r12,TI_LOCAL_FLAGS(r2)
279272
lwz r9,_MSR(r11) /* if sleeping, clear MSR.EE */
280273
rlwinm r9,r9,0,~MSR_EE
281274
lwz r12,_LINK(r11) /* and return to address in LR */
@@ -347,8 +340,7 @@ _GLOBAL(DoSyscall)
347340
mtmsr r11
348341
1:
349342
#endif /* CONFIG_TRACE_IRQFLAGS */
350-
CURRENT_THREAD_INFO(r10, r1)
351-
lwz r11,TI_FLAGS(r10)
343+
lwz r11,TI_FLAGS(r2)
352344
andi. r11,r11,_TIF_SYSCALL_DOTRACE
353345
bne- syscall_dotrace
354346
syscall_dotrace_cont:
@@ -381,13 +373,12 @@ ret_from_syscall:
381373
lwz r3,GPR3(r1)
382374
#endif
383375
mr r6,r3
384-
CURRENT_THREAD_INFO(r12, r1)
385376
/* disable interrupts so current_thread_info()->flags can't change */
386377
LOAD_MSR_KERNEL(r10,MSR_KERNEL) /* doesn't include MSR_EE */
387378
/* Note: We don't bother telling lockdep about it */
388379
SYNC
389380
MTMSRD(r10)
390-
lwz r9,TI_FLAGS(r12)
381+
lwz r9,TI_FLAGS(r2)
391382
li r8,-MAX_ERRNO
392383
andi. r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK)
393384
bne- syscall_exit_work
@@ -434,8 +425,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_NEED_PAIRED_STWCX)
434425
#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
435426
andi. r4,r8,MSR_PR
436427
beq 3f
437-
CURRENT_THREAD_INFO(r4, r1)
438-
ACCOUNT_CPU_USER_EXIT(r4, r5, r7)
428+
ACCOUNT_CPU_USER_EXIT(r2, r5, r7)
439429
3:
440430
#endif
441431
lwz r4,_LINK(r1)
@@ -528,15 +518,14 @@ syscall_exit_work:
528518
/* Clear per-syscall TIF flags if any are set. */
529519

530520
li r11,_TIF_PERSYSCALL_MASK
531-
addi r12,r12,TI_FLAGS
521+
addi r12,r2,TI_FLAGS
532522
3: lwarx r8,0,r12
533523
andc r8,r8,r11
534524
#ifdef CONFIG_IBM405_ERR77
535525
dcbt 0,r12
536526
#endif
537527
stwcx. r8,0,r12
538528
bne- 3b
539-
subi r12,r12,TI_FLAGS
540529

541530
4: /* Anything which requires enabling interrupts? */
542531
andi. r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP)
@@ -815,8 +804,7 @@ ret_from_except:
815804

816805
user_exc_return: /* r10 contains MSR_KERNEL here */
817806
/* Check current_thread_info()->flags */
818-
CURRENT_THREAD_INFO(r9, r1)
819-
lwz r9,TI_FLAGS(r9)
807+
lwz r9,TI_FLAGS(r2)
820808
andi. r0,r9,_TIF_USER_WORK_MASK
821809
bne do_work
822810

@@ -828,18 +816,14 @@ restore_user:
828816
andis. r10,r0,DBCR0_IDM@h
829817
bnel- load_dbcr0
830818
#endif
831-
#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
832-
CURRENT_THREAD_INFO(r9, r1)
833-
ACCOUNT_CPU_USER_EXIT(r9, r10, r11)
834-
#endif
819+
ACCOUNT_CPU_USER_EXIT(r2, r10, r11)
835820

836821
b restore
837822

838823
/* N.B. the only way to get here is from the beq following ret_from_except. */
839824
resume_kernel:
840825
/* check current_thread_info, _TIF_EMULATE_STACK_STORE */
841-
CURRENT_THREAD_INFO(r9, r1)
842-
lwz r8,TI_FLAGS(r9)
826+
lwz r8,TI_FLAGS(r2)
843827
andis. r0,r8,_TIF_EMULATE_STACK_STORE@h
844828
beq+ 1f
845829

@@ -865,7 +849,7 @@ resume_kernel:
865849

866850
/* Clear _TIF_EMULATE_STACK_STORE flag */
867851
lis r11,_TIF_EMULATE_STACK_STORE@h
868-
addi r5,r9,TI_FLAGS
852+
addi r5,r2,TI_FLAGS
869853
0: lwarx r8,0,r5
870854
andc r8,r8,r11
871855
#ifdef CONFIG_IBM405_ERR77
@@ -877,7 +861,7 @@ resume_kernel:
877861

878862
#ifdef CONFIG_PREEMPT
879863
/* check current_thread_info->preempt_count */
880-
lwz r0,TI_PREEMPT(r9)
864+
lwz r0,TI_PREEMPT(r2)
881865
cmpwi 0,r0,0 /* if non-zero, just restore regs and return */
882866
bne restore
883867
andi. r8,r8,_TIF_NEED_RESCHED
@@ -893,8 +877,7 @@ resume_kernel:
893877
bl trace_hardirqs_off
894878
#endif
895879
1: bl preempt_schedule_irq
896-
CURRENT_THREAD_INFO(r9, r1)
897-
lwz r3,TI_FLAGS(r9)
880+
lwz r3,TI_FLAGS(r2)
898881
andi. r0,r3,_TIF_NEED_RESCHED
899882
bne- 1b
900883
#ifdef CONFIG_TRACE_IRQFLAGS
@@ -1190,8 +1173,7 @@ load_dbcr0:
11901173
lis r11,global_dbcr0@ha
11911174
addi r11,r11,global_dbcr0@l
11921175
#ifdef CONFIG_SMP
1193-
CURRENT_THREAD_INFO(r9, r1)
1194-
lwz r9,TI_CPU(r9)
1176+
lwz r9,TASK_CPU(r2)
11951177
slwi r9,r9,3
11961178
add r11,r11,r9
11971179
#endif
@@ -1231,8 +1213,7 @@ recheck:
12311213
LOAD_MSR_KERNEL(r10,MSR_KERNEL)
12321214
SYNC
12331215
MTMSRD(r10) /* disable interrupts */
1234-
CURRENT_THREAD_INFO(r9, r1)
1235-
lwz r9,TI_FLAGS(r9)
1216+
lwz r9,TI_FLAGS(r2)
12361217
andi. r0,r9,_TIF_NEED_RESCHED
12371218
bne- do_resched
12381219
andi. r0,r9,_TIF_USER_WORK_MASK

arch/powerpc/kernel/epapr_hcalls.S

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,9 @@
2121
#ifndef CONFIG_PPC64
2222
/* epapr_ev_idle() was derived from e500_idle() */
2323
_GLOBAL(epapr_ev_idle)
24-
CURRENT_THREAD_INFO(r3, r1)
25-
PPC_LL r4, TI_LOCAL_FLAGS(r3) /* set napping bit */
24+
PPC_LL r4, TI_LOCAL_FLAGS(r2) /* set napping bit */
2625
ori r4, r4,_TLF_NAPPING /* so when we take an exception */
27-
PPC_STL r4, TI_LOCAL_FLAGS(r3) /* it will return to our caller */
26+
PPC_STL r4, TI_LOCAL_FLAGS(r2) /* it will return to our caller */
2827

2928
wrteei 1
3029

arch/powerpc/kernel/head_fsl_booke.S

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,7 @@ set_ivor:
244244
stwu r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1)
245245

246246
#ifdef CONFIG_SMP
247-
CURRENT_THREAD_INFO(r22, r1)
248-
stw r24, TI_CPU(r22)
247+
stw r24, TASK_CPU(r2)
249248
#endif
250249

251250
bl early_init
@@ -719,7 +718,7 @@ finish_tlb_load:
719718

720719
/* Get the next_tlbcam_idx percpu var */
721720
#ifdef CONFIG_SMP
722-
lwz r15, TI_CPU-THREAD(r12)
721+
lwz r15, TASK_CPU-THREAD(r12)
723722
lis r14, __per_cpu_offset@h
724723
ori r14, r14, __per_cpu_offset@l
725724
rlwinm r15, r15, 2, 0, 29

arch/powerpc/kernel/idle_6xx.S

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,9 @@ BEGIN_FTR_SECTION
136136
DSSALL
137137
sync
138138
END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
139-
CURRENT_THREAD_INFO(r9, r1)
140-
lwz r8,TI_LOCAL_FLAGS(r9) /* set napping bit */
139+
lwz r8,TI_LOCAL_FLAGS(r2) /* set napping bit */
141140
ori r8,r8,_TLF_NAPPING /* so when we take an exception */
142-
stw r8,TI_LOCAL_FLAGS(r9) /* it will return to our caller */
141+
stw r8,TI_LOCAL_FLAGS(r2) /* it will return to our caller */
143142
mfmsr r7
144143
ori r7,r7,MSR_EE
145144
oris r7,r7,MSR_POW@h
@@ -159,9 +158,7 @@ _GLOBAL(power_save_ppc32_restore)
159158
stw r9,_NIP(r11) /* make it do a blr */
160159

161160
#ifdef CONFIG_SMP
162-
CURRENT_THREAD_INFO(r12, r1)
163-
tophys(r12, r12)
164-
lwz r11,TI_CPU(r12) /* get cpu number * 4 */
161+
lwz r11,TASK_CPU(r2) /* get cpu number * 4 */
165162
slwi r11,r11,2
166163
#else
167164
li r11,0

arch/powerpc/kernel/idle_e500.S

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,9 @@
2222
.text
2323

2424
_GLOBAL(e500_idle)
25-
CURRENT_THREAD_INFO(r3, r1)
26-
lwz r4,TI_LOCAL_FLAGS(r3) /* set napping bit */
25+
lwz r4,TI_LOCAL_FLAGS(r2) /* set napping bit */
2726
ori r4,r4,_TLF_NAPPING /* so when we take an exception */
28-
stw r4,TI_LOCAL_FLAGS(r3) /* it will return to our caller */
27+
stw r4,TI_LOCAL_FLAGS(r2) /* it will return to our caller */
2928

3029
#ifdef CONFIG_PPC_E500MC
3130
wrteei 1
@@ -88,8 +87,7 @@ _GLOBAL(power_save_ppc32_restore)
8887
stw r9,_NIP(r11) /* make it do a blr */
8988

9089
#ifdef CONFIG_SMP
91-
CURRENT_THREAD_INFO(r12, r1)
92-
lwz r11,TI_CPU(r12) /* get cpu number * 4 */
90+
lwz r11,TASK_CPU(r2) /* get cpu number * 4 */
9391
slwi r11,r11,2
9492
#else
9593
li r11,0

arch/powerpc/kernel/misc_32.S

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,7 @@ _GLOBAL(low_choose_750fx_pll)
183183

184184
#ifdef CONFIG_SMP
185185
/* Store new HID1 image */
186-
CURRENT_THREAD_INFO(r6, r1)
187-
lwz r6,TI_CPU(r6)
186+
lwz r6,TASK_CPU(r2)
188187
slwi r6,r6,2
189188
#else
190189
li r6, 0

arch/powerpc/mm/hash_low_32.S

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,7 @@ _GLOBAL(add_hash_page)
183183
add r3,r3,r0 /* note create_hpte trims to 24 bits */
184184

185185
#ifdef CONFIG_SMP
186-
CURRENT_THREAD_INFO(r8, r1) /* use cpu number to make tag */
187-
lwz r8,TI_CPU(r8) /* to go in mmu_hash_lock */
186+
lwz r8,TASK_CPU(r2) /* to go in mmu_hash_lock */
188187
oris r8,r8,12
189188
#endif /* CONFIG_SMP */
190189

@@ -540,9 +539,7 @@ _GLOBAL(flush_hash_pages)
540539
#ifdef CONFIG_SMP
541540
lis r9, (mmu_hash_lock - PAGE_OFFSET)@ha
542541
addi r9, r9, (mmu_hash_lock - PAGE_OFFSET)@l
543-
CURRENT_THREAD_INFO(r8, r1)
544-
tophys(r8, r8)
545-
lwz r8,TI_CPU(r8)
542+
lwz r8,TASK_CPU(r2)
546543
oris r8,r8,9
547544
10: lwarx r0,0,r9
548545
cmpi 0,r0,0
@@ -637,8 +634,7 @@ EXPORT_SYMBOL(flush_hash_pages)
637634
*/
638635
_GLOBAL(_tlbie)
639636
#ifdef CONFIG_SMP
640-
CURRENT_THREAD_INFO(r8, r1)
641-
lwz r8,TI_CPU(r8)
637+
lwz r8,TASK_CPU(r2)
642638
oris r8,r8,11
643639
mfmsr r10
644640
SYNC
@@ -675,8 +671,7 @@ _GLOBAL(_tlbie)
675671
*/
676672
_GLOBAL(_tlbia)
677673
#if defined(CONFIG_SMP)
678-
CURRENT_THREAD_INFO(r8, r1)
679-
lwz r8,TI_CPU(r8)
674+
lwz r8,TASK_CPU(r2)
680675
oris r8,r8,10
681676
mfmsr r10
682677
SYNC

arch/powerpc/sysdev/6xx-suspend.S

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,9 @@ _GLOBAL(mpc6xx_enter_standby)
2929
ori r5, r5, ret_from_standby@l
3030
mtlr r5
3131

32-
CURRENT_THREAD_INFO(r5, r1)
33-
lwz r6, TI_LOCAL_FLAGS(r5)
32+
lwz r6, TI_LOCAL_FLAGS(r2)
3433
ori r6, r6, _TLF_SLEEPING
35-
stw r6, TI_LOCAL_FLAGS(r5)
34+
stw r6, TI_LOCAL_FLAGS(r2)
3635

3736
mfmsr r5
3837
ori r5, r5, MSR_EE

0 commit comments

Comments
 (0)