summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Wu <tung7970@gmail.com>2010-11-10 21:48:15 +0800
committerRalf Baechle <ralf@linux-mips.org>2010-12-16 18:10:57 +0000
commite5674ad6ca9f1020c2bcc009a55becba3c30d8a3 (patch)
tree05d9d2854ca16e6d4b2f87ddffd17926aa21e9bd
parent515b029d005b5694cf612a0a5ca6f861a7e45362 (diff)
downloadlinux-3.10-e5674ad6ca9f1020c2bcc009a55becba3c30d8a3.tar.gz
linux-3.10-e5674ad6ca9f1020c2bcc009a55becba3c30d8a3.tar.bz2
linux-3.10-e5674ad6ca9f1020c2bcc009a55becba3c30d8a3.zip
MIPS: Separate two consecutive loads in memset.S
partial_fixup is used in noreorder block. Separating two consecutive loads can save one cycle on processors with GPR intrelock and can fix load-use on processors that need a load delay slot. Also do so for fwd_fixup. [Ralf: Only R2000/R3000 class processors are lacking the the load-user interlock and even some of those got it retrofitted. With R2000/R3000 being fairly uncommon these days the impact of this bug should be minor.] Signed-off-by: Tony Wu <tung7970@gmail.com> To: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/1768/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
-rw-r--r--arch/mips/lib/memset.S4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/mips/lib/memset.S b/arch/mips/lib/memset.S
index 77dc3b20110..606c8a9efe3 100644
--- a/arch/mips/lib/memset.S
+++ b/arch/mips/lib/memset.S
@@ -161,16 +161,16 @@ FEXPORT(__bzero)
.Lfwd_fixup:
PTR_L t0, TI_TASK($28)
- LONG_L t0, THREAD_BUADDR(t0)
andi a2, 0x3f
+ LONG_L t0, THREAD_BUADDR(t0)
LONG_ADDU a2, t1
jr ra
LONG_SUBU a2, t0
.Lpartial_fixup:
PTR_L t0, TI_TASK($28)
- LONG_L t0, THREAD_BUADDR(t0)
andi a2, LONGMASK
+ LONG_L t0, THREAD_BUADDR(t0)
LONG_ADDU a2, t1
jr ra
LONG_SUBU a2, t0