aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2019-08-12 13:13:20 -0400
committerHelge Deller <deller@gmx.de>2019-08-12 13:17:40 -0400
commita5ff2130a4d98d22377e5fdab87d713f4b17f4f2 (patch)
tree72d50c4107f39ee0482ef751c7ce9239a14d6f8d /arch/parisc
parent82992fc70f98dee091faa926eb5cecadda5c84f4 (diff)
parisc: speed up flush_tlb_all_local with qemu
When started in qemu, we know that qemu will drop all local TLB entries on any pxtlbe instruction. So, if we detect qemu, replace the whole flush_tlb_all_local function by one pdtlbe instruction. Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch/parisc')
-rw-r--r--arch/parisc/kernel/pacache.S9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S
index df46b0e5a915..fa092ed1e837 100644
--- a/arch/parisc/kernel/pacache.S
+++ b/arch/parisc/kernel/pacache.S
@@ -174,6 +174,15 @@ fdtdone:
174 174
1752: bv %r0(%r2) 1752: bv %r0(%r2)
176 nop 176 nop
177
178 /*
179 * When running in qemu, drop whole flush_tlb_all_local function and
180 * replace by one pdtlbe instruction, for which QEMU will drop all
181 * local TLB entries.
182 */
1833: pdtlbe %r0(%sr1,%r0)
184 bv,n %r0(%r2)
185 ALTERNATIVE_CODE(flush_tlb_all_local, 2, ALT_COND_RUN_ON_QEMU, 3b)
177ENDPROC_CFI(flush_tlb_all_local) 186ENDPROC_CFI(flush_tlb_all_local)
178 187
179 .import cache_info,data 188 .import cache_info,data