patch-2.4.10 linux/arch/mips/lib/memcpy.S
Next file: linux/arch/mips/math-emu/cp1emu.c
Previous file: linux/arch/mips/lib/ide-std.c
Back to the patch index
Back to the overall index
- Lines: 44
- Date:
Sun Sep 9 10:43:01 2001
- Orig file:
v2.4.9/linux/arch/mips/lib/memcpy.S
- Orig date:
Tue Dec 5 23:15:12 2000
diff -u --recursive --new-file v2.4.9/linux/arch/mips/lib/memcpy.S linux/arch/mips/lib/memcpy.S
@@ -402,16 +402,20 @@
.align 5
LEAF(memmove)
- sltu t0, a0, a1 # dst < src -> memcpy
- bnez t0, memcpy
- addu v0, a0, a2
- sltu t0, v0, a1 # dst + len < src -> non-
- bnez t0, __memcpy # overlapping, can use memcpy
+ addu t0, a0, a2
+ sltu t0, a1, t0 # dst + len <= src -> memcpy
+ addu t1, a1, a2
+ sltu t1, a0, t1 # dst >= src + len -> memcpy
+ and t0, t1
+ beqz t0, __memcpy
move v0, a0 /* return value */
beqz a2, r_out
END(memmove)
LEAF(__rmemcpy) /* a0=dst a1=src a2=len */
+ sltu t0, a1, a0
+ beqz t0, r_end_bytes_up # src >= dst
+ nop
addu a0, a2 # dst = dst + len
addu a1, a2 # src = src + len
@@ -563,6 +567,17 @@
subu a0, a0, 0x1
r_out:
+ jr ra
+ move a2, zero
+
+r_end_bytes_up:
+ lb t0, (a1)
+ subu a2, a2, 0x1
+ sb t0, (a0)
+ addu a1, a1, 0x1
+ bnez a2, r_end_bytes_up
+ addu a0, a0, 0x1
+
jr ra
move a2, zero
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)