Commit e1347a02 authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

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: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/12f4f4f0ff89aeab3b937fc96c84fb35e1b2517e.1580748445.git.christophe.leroy@c-s.fr
parent a83836db
...@@ -696,18 +696,21 @@ _GLOBAL(_tlbia) ...@@ -696,18 +696,21 @@ _GLOBAL(_tlbia)
bne- 10b bne- 10b
stwcx. r8,0,r9 stwcx. r8,0,r9
bne- 10b bne- 10b
#endif /* CONFIG_SMP */
li r5, 32
lis r4, KERNELBASE@h
mtctr r5
sync sync
tlbia 0: tlbie r4
addi r4, r4, 0x1000
bdnz 0b
sync sync
#ifdef CONFIG_SMP
TLBSYNC TLBSYNC
li r0,0 li r0,0
stw r0,0(r9) /* clear mmu_hash_lock */ stw r0,0(r9) /* clear mmu_hash_lock */
mtmsr r10 mtmsr r10
SYNC_601 SYNC_601
isync isync
#else /* CONFIG_SMP */
sync
tlbia
sync
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
blr blr
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment