diff options
author | Tony Wu <tung7970@gmail.com> | 2010-11-10 21:48:15 +0800 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2010-12-16 18:10:57 +0000 |
commit | e5674ad6ca9f1020c2bcc009a55becba3c30d8a3 (patch) | |
tree | 05d9d2854ca16e6d4b2f87ddffd17926aa21e9bd /arch | |
parent | 515b029d005b5694cf612a0a5ca6f861a7e45362 (diff) | |
download | linux-stable-e5674ad6ca9f1020c2bcc009a55becba3c30d8a3.tar.gz linux-stable-e5674ad6ca9f1020c2bcc009a55becba3c30d8a3.tar.bz2 linux-stable-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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/lib/memset.S | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/mips/lib/memset.S b/arch/mips/lib/memset.S index 77dc3b20110a..606c8a9efe3b 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 |