forked from Minki/linux
powerpc/32s: Slenderize _tlbia() for powerpc 603/603e
_tlbia() is a function used only on 603/603e core, ie on CPUs which don't have a hash table. _tlbia() uses the tlbia macro which implements a loop of 1024 tlbie. On the 603/603e core, flushing the entire TLB requires no more than 32 tlbie. Replace tlbia by a loop of 32 tlbie. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/12f4f4f0ff89aeab3b937fc96c84fb35e1b2517e.1580748445.git.christophe.leroy@c-s.fr
This commit is contained in:
parent
a83836dbc5
commit
e1347a020b
@ -696,18 +696,21 @@ _GLOBAL(_tlbia)
|
||||
bne- 10b
|
||||
stwcx. r8,0,r9
|
||||
bne- 10b
|
||||
#endif /* CONFIG_SMP */
|
||||
li r5, 32
|
||||
lis r4, KERNELBASE@h
|
||||
mtctr r5
|
||||
sync
|
||||
tlbia
|
||||
0: tlbie r4
|
||||
addi r4, r4, 0x1000
|
||||
bdnz 0b
|
||||
sync
|
||||
#ifdef CONFIG_SMP
|
||||
TLBSYNC
|
||||
li r0,0
|
||||
stw r0,0(r9) /* clear mmu_hash_lock */
|
||||
mtmsr r10
|
||||
SYNC_601
|
||||
isync
|
||||
#else /* CONFIG_SMP */
|
||||
sync
|
||||
tlbia
|
||||
sync
|
||||
#endif /* CONFIG_SMP */
|
||||
blr
|
||||
|
Loading…
Reference in New Issue
Block a user