projects
/
platform
/
kernel
/
linux-starfive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a83836d
)
powerpc/32s: Slenderize _tlbia() for powerpc 603/603e
author
Christophe Leroy
<christophe.leroy@c-s.fr>
Mon, 3 Feb 2020 16:47:37 +0000
(16:47 +0000)
committer
Michael Ellerman
<mpe@ellerman.id.au>
Wed, 19 Feb 2020 11:46:11 +0000
(22:46 +1100)
_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
arch/powerpc/mm/book3s32/hash_low.S
patch
|
blob
|
history
diff --git
a/arch/powerpc/mm/book3s32/hash_low.S
b/arch/powerpc/mm/book3s32/hash_low.S
index
c11b0a0
..
a5039ad
100644
(file)
--- a/
arch/powerpc/mm/book3s32/hash_low.S
+++ b/
arch/powerpc/mm/book3s32/hash_low.S
@@
-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