Module Name: src
Committed By: matt
Date: Sun Aug 11 04:56:32 UTC 2013
Modified Files:
src/common/lib/libc/arch/arm/string: memcmp.S memcpy_arm.S
memcpy_xscale.S memmove.S memset.S strcpy_arm.S strrchr_arm.S
Log Message:
Switch to unified syntax
use RET/RETc
use push/pop
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/common/lib/libc/arch/arm/string/memcmp.S
cvs rdiff -u -r1.3 -r1.4 src/common/lib/libc/arch/arm/string/memcpy_arm.S \
src/common/lib/libc/arch/arm/string/memset.S \
src/common/lib/libc/arch/arm/string/strrchr_arm.S
cvs rdiff -u -r1.2 -r1.3 src/common/lib/libc/arch/arm/string/memcpy_xscale.S \
src/common/lib/libc/arch/arm/string/strcpy_arm.S
cvs rdiff -u -r1.4 -r1.5 src/common/lib/libc/arch/arm/string/memmove.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/common/lib/libc/arch/arm/string/memcmp.S
diff -u src/common/lib/libc/arch/arm/string/memcmp.S:1.1 src/common/lib/libc/arch/arm/string/memcmp.S:1.2
--- src/common/lib/libc/arch/arm/string/memcmp.S:1.1 Tue Dec 20 19:28:49 2005
+++ src/common/lib/libc/arch/arm/string/memcmp.S Sun Aug 11 04:56:32 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: memcmp.S,v 1.1 2005/12/20 19:28:49 christos Exp $ */
+/* $NetBSD: memcmp.S,v 1.2 2013/08/11 04:56:32 matt Exp $ */
/*
* Copyright 2003 Wasabi Systems, Inc.
@@ -64,7 +64,7 @@
#include <machine/asm.h>
-RCSID("$NetBSD: memcmp.S,v 1.1 2005/12/20 19:28:49 christos Exp $")
+RCSID("$NetBSD: memcmp.S,v 1.2 2013/08/11 04:56:32 matt Exp $")
ENTRY(memcmp)
mov ip, r0
@@ -76,7 +76,7 @@ ENTRY(memcmp)
/* Are both addresses aligned the same way? */
cmp r2, #0x00
- eornes r3, ip, r1
+ eorsne r3, ip, r1
RETc(eq) /* len == 0, or same addresses! */
tst r3, #0x03
subne r2, r2, #0x01
@@ -157,23 +157,23 @@ ENTRY(memcmp)
ldrb r0, [ip, #0x00] /* r0 = b1#0 */
ldrb r2, [r1, #0x01] /* r2 = b2#1 */
subs r0, r0, r3 /* r0 = b1#0 - b2#0 */
- ldreqb r3, [ip, #0x01] /* r3 = b1#1 */
+ ldrbeq r3, [ip, #0x01] /* r3 = b1#1 */
RETc(ne) /* Return if mismatch on #0 */
subs r0, r3, r2 /* r0 = b1#1 - b2#1 */
- ldreqb r3, [r1, #0x02] /* r3 = b2#2 */
- ldreqb r0, [ip, #0x02] /* r0 = b1#2 */
+ ldrbeq r3, [r1, #0x02] /* r3 = b2#2 */
+ ldrbeq r0, [ip, #0x02] /* r0 = b1#2 */
RETc(ne) /* Return if mismatch on #1 */
ldrb r2, [r1, #0x03] /* r2 = b2#3 */
subs r0, r0, r3 /* r0 = b1#2 - b2#2 */
- ldreqb r3, [ip, #0x03] /* r3 = b1#3 */
+ ldrbeq r3, [ip, #0x03] /* r3 = b1#3 */
RETc(ne) /* Return if mismatch on #2 */
subs r0, r3, r2 /* r0 = b1#3 - b2#3 */
- ldreqb r3, [r1, #0x04] /* r3 = b2#4 */
- ldreqb r0, [ip, #0x04] /* r0 = b1#4 */
+ ldrbeq r3, [r1, #0x04] /* r3 = b2#4 */
+ ldrbeq r0, [ip, #0x04] /* r0 = b1#4 */
RETc(ne) /* Return if mismatch on #3 */
ldrb r2, [r1, #0x05] /* r2 = b2#5 */
subs r0, r0, r3 /* r0 = b1#4 - b2#4 */
- ldreqb r3, [ip, #0x05] /* r3 = b1#5 */
+ ldrbeq r3, [ip, #0x05] /* r3 = b1#5 */
RETc(ne) /* Return if mismatch on #4 */
sub r0, r3, r2 /* r0 = b1#5 - b2#5 */
RET
Index: src/common/lib/libc/arch/arm/string/memcpy_arm.S
diff -u src/common/lib/libc/arch/arm/string/memcpy_arm.S:1.3 src/common/lib/libc/arch/arm/string/memcpy_arm.S:1.4
--- src/common/lib/libc/arch/arm/string/memcpy_arm.S:1.3 Mon Jan 28 06:23:44 2013
+++ src/common/lib/libc/arch/arm/string/memcpy_arm.S Sun Aug 11 04:56:32 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: memcpy_arm.S,v 1.3 2013/01/28 06:23:44 matt Exp $ */
+/* $NetBSD: memcpy_arm.S,v 1.4 2013/08/11 04:56:32 matt Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@ STRONG_ALIAS(__aeabi_memcpy, memcpy)
/* LINTSTUB: Func: void *memcpy(void *dst, const void *src, size_t len) */
ENTRY(memcpy)
/* save leaf functions having to store this away */
- stmdb sp!, {r0, lr} /* memcpy() returns dest addr */
+ push {r0, lr} /* memcpy() returns dest addr */
subs r2, r2, #4
blt .Lmemcpy_l4 /* less than 4 bytes */
@@ -82,7 +82,7 @@ ENTRY(memcpy)
blt .Lmemcpy_l12 /* less than 12 bytes (4 from above) */
subs r2, r2, #0x14
blt .Lmemcpy_l32 /* less than 32 bytes (12 from above) */
- stmdb sp!, {r4} /* borrow r4 */
+ push {r4} /* borrow r4 */
/* blat 32 bytes at a time */
/* XXX for really big copies perhaps we should use more registers */
@@ -95,19 +95,19 @@ ENTRY(memcpy)
bge .Lmemcpy_loop32
cmn r2, #0x10
- ldmgeia r1!, {r3, r4, r12, lr} /* blat a remaining 16 bytes */
- stmgeia r0!, {r3, r4, r12, lr}
+ ldmiage r1!, {r3, r4, r12, lr} /* blat a remaining 16 bytes */
+ stmiage r0!, {r3, r4, r12, lr}
subge r2, r2, #0x10
- ldmia sp!, {r4} /* return r4 */
+ pop {r4} /* return r4 */
.Lmemcpy_l32:
adds r2, r2, #0x14
/* blat 12 bytes at a time */
.Lmemcpy_loop12:
- ldmgeia r1!, {r3, r12, lr}
- stmgeia r0!, {r3, r12, lr}
- subges r2, r2, #0x0c
+ ldmiage r1!, {r3, r12, lr}
+ stmiage r0!, {r3, r12, lr}
+ subsge r2, r2, #0x0c
bge .Lmemcpy_loop12
.Lmemcpy_l12:
@@ -117,27 +117,27 @@ ENTRY(memcpy)
subs r2, r2, #4
ldrlt r3, [r1], #4
strlt r3, [r0], #4
- ldmgeia r1!, {r3, r12}
- stmgeia r0!, {r3, r12}
+ ldmiage r1!, {r3, r12}
+ stmiage r0!, {r3, r12}
subge r2, r2, #4
.Lmemcpy_l4:
/* less than 4 bytes to go */
adds r2, r2, #4
#ifdef __APCS_26_
- ldmeqia sp!, {r0, pc}^ /* done */
+ ldmiaeq sp!, {r0, pc}^ /* done */
#else
- ldmeqia sp!, {r0, pc} /* done */
+ popeq {r0, pc} /* done */
#endif
/* copy the crud byte at a time */
cmp r2, #2
ldrb r3, [r1], #1
strb r3, [r0], #1
- ldrgeb r3, [r1], #1
- strgeb r3, [r0], #1
- ldrgtb r3, [r1], #1
- strgtb r3, [r0], #1
- ldmia sp!, {r0, pc}
+ ldrbge r3, [r1], #1
+ strbge r3, [r0], #1
+ ldrbgt r3, [r1], #1
+ strbgt r3, [r0], #1
+ pop {r0, pc}
/* erg - unaligned destination */
.Lmemcpy_destul:
@@ -147,10 +147,10 @@ ENTRY(memcpy)
/* align destination with byte copies */
ldrb r3, [r1], #1
strb r3, [r0], #1
- ldrgeb r3, [r1], #1
- strgeb r3, [r0], #1
- ldrgtb r3, [r1], #1
- strgtb r3, [r0], #1
+ ldrbge r3, [r1], #1
+ strbge r3, [r0], #1
+ ldrbgt r3, [r1], #1
+ strbgt r3, [r0], #1
subs r2, r2, r12
blt .Lmemcpy_l4 /* less the 4 bytes */
@@ -168,7 +168,7 @@ ENTRY(memcpy)
cmp r2, #0x0c
blt .Lmemcpy_srcul1loop4
sub r2, r2, #0x0c
- stmdb sp!, {r4, r5}
+ push {r4, r5}
.Lmemcpy_srcul1loop16:
#ifdef __ARMEB__
@@ -197,7 +197,7 @@ ENTRY(memcpy)
stmia r0!, {r3-r5, r12}
subs r2, r2, #0x10
bge .Lmemcpy_srcul1loop16
- ldmia sp!, {r4, r5}
+ pop {r4, r5}
adds r2, r2, #0x0c
blt .Lmemcpy_srcul1l4
@@ -225,7 +225,7 @@ ENTRY(memcpy)
cmp r2, #0x0c
blt .Lmemcpy_srcul2loop4
sub r2, r2, #0x0c
- stmdb sp!, {r4, r5}
+ push {r4, r5}
.Lmemcpy_srcul2loop16:
#ifdef __ARMEB__
@@ -254,7 +254,7 @@ ENTRY(memcpy)
stmia r0!, {r3-r5, r12}
subs r2, r2, #0x10
bge .Lmemcpy_srcul2loop16
- ldmia sp!, {r4, r5}
+ pop {r4, r5}
adds r2, r2, #0x0c
blt .Lmemcpy_srcul2l4
@@ -282,7 +282,7 @@ ENTRY(memcpy)
cmp r2, #0x0c
blt .Lmemcpy_srcul3loop4
sub r2, r2, #0x0c
- stmdb sp!, {r4, r5}
+ push {r4, r5}
.Lmemcpy_srcul3loop16:
#ifdef __ARMEB__
@@ -311,7 +311,7 @@ ENTRY(memcpy)
stmia r0!, {r3-r5, r12}
subs r2, r2, #0x10
bge .Lmemcpy_srcul3loop16
- ldmia sp!, {r4, r5}
+ pop {r4, r5}
adds r2, r2, #0x0c
blt .Lmemcpy_srcul3l4
@@ -334,3 +334,4 @@ ENTRY(memcpy)
.Lmemcpy_srcul3l4:
sub r1, r1, #1
b .Lmemcpy_l4
+END(memcpy)
Index: src/common/lib/libc/arch/arm/string/memset.S
diff -u src/common/lib/libc/arch/arm/string/memset.S:1.3 src/common/lib/libc/arch/arm/string/memset.S:1.4
--- src/common/lib/libc/arch/arm/string/memset.S:1.3 Mon Jan 28 06:23:44 2013
+++ src/common/lib/libc/arch/arm/string/memset.S Sun Aug 11 04:56:32 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: memset.S,v 1.3 2013/01/28 06:23:44 matt Exp $ */
+/* $NetBSD: memset.S,v 1.4 2013/08/11 04:56:32 matt Exp $ */
/*
* Copyright 2003 Wasabi Systems, Inc.
@@ -128,39 +128,39 @@ ENTRY(memset)
.Lmemset_loop128:
subs r1, r1, #0x80
#ifdef _ARM_ARCH_DWORD_OK
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
-#else
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+#else
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
#endif
bgt .Lmemset_loop128
RETc(eq) /* Zero length so just exit */
@@ -171,15 +171,15 @@ ENTRY(memset)
.Lmemset_loop32:
subs r1, r1, #0x20
#ifdef _ARM_ARCH_DWORD_OK
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
-#else
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+#else
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
#endif
bgt .Lmemset_loop32
RETc(eq) /* Zero length so just exit */
@@ -188,11 +188,11 @@ ENTRY(memset)
/* Deal with 16 bytes or more */
#ifdef _ARM_ARCH_DWORD_OK
- strged r2, [ip], #0x08
- strged r2, [ip], #0x08
+ strdge r2, [ip], #0x08
+ strdge r2, [ip], #0x08
#else
- stmgeia ip!, {r2-r3}
- stmgeia ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
+ stmiage ip!, {r2-r3}
#endif
RETc(eq) /* Zero length so just exit */
@@ -215,17 +215,17 @@ ENTRY(memset)
#endif
strb r3, [ip], #0x01 /* Set 1 byte */
- strgeb r3, [ip], #0x01 /* Set another byte */
- strgtb r3, [ip] /* and a third */
+ strbge r3, [ip], #0x01 /* Set another byte */
+ strbgt r3, [ip] /* and a third */
RET /* Exit */
.Lmemset_wordunaligned:
rsb r2, r2, #0x004
strb r3, [ip], #0x01 /* Set 1 byte */
cmp r2, #0x02
- strgeb r3, [ip], #0x01 /* Set another byte */
+ strbge r3, [ip], #0x01 /* Set another byte */
sub r1, r1, r2
- strgtb r3, [ip], #0x01 /* and a third */
+ strbgt r3, [ip], #0x01 /* and a third */
cmp r1, #0x04 /* More than 4 bytes left? */
bge .Lmemset_wordaligned /* Yup */
@@ -234,6 +234,6 @@ ENTRY(memset)
RETc(eq) /* Zero length so exit */
strb r3, [ip], #0x01 /* Set 1 byte */
cmp r1, #0x02
- strgeb r3, [ip], #0x01 /* Set another byte */
- strgtb r3, [ip] /* and a third */
+ strbge r3, [ip], #0x01 /* Set another byte */
+ strbgt r3, [ip] /* and a third */
RET /* Exit */
Index: src/common/lib/libc/arch/arm/string/strrchr_arm.S
diff -u src/common/lib/libc/arch/arm/string/strrchr_arm.S:1.3 src/common/lib/libc/arch/arm/string/strrchr_arm.S:1.4
--- src/common/lib/libc/arch/arm/string/strrchr_arm.S:1.3 Fri Feb 8 02:19:36 2013
+++ src/common/lib/libc/arch/arm/string/strrchr_arm.S Sun Aug 11 04:56:32 2013
@@ -29,7 +29,7 @@
#include <machine/asm.h>
-RCSID("$NetBSD: strrchr_arm.S,v 1.3 2013/02/08 02:19:36 matt Exp $")
+RCSID("$NetBSD: strrchr_arm.S,v 1.4 2013/08/11 04:56:32 matt Exp $")
#ifdef __ARMEL__
#define BYTE0 0x000000ff
@@ -105,8 +105,8 @@ ENTRY(strrchr)
bics r5, r5, r4 /* clear any NUL match bits */
beq .Ldone /* no remaining matches, we're done */
movs r3, r4, lshi #8 /* shift up a byte */
- orrnes r3, r3, r3, lshi #8 /* if non 0, copy up to next byte */
- orrnes r3, r3, r3, lshi #8 /* if non 0, copy up to last byte */
+ orrsne r3, r3, r3, lshi #8 /* if non 0, copy up to next byte */
+ orrsne r3, r3, r3, lshi #8 /* if non 0, copy up to last byte */
bics r5, r5, r3 /* clear match bits */
beq .Ldone /* no remaining matches, we're done */
.Lfind_match:
Index: src/common/lib/libc/arch/arm/string/memcpy_xscale.S
diff -u src/common/lib/libc/arch/arm/string/memcpy_xscale.S:1.2 src/common/lib/libc/arch/arm/string/memcpy_xscale.S:1.3
--- src/common/lib/libc/arch/arm/string/memcpy_xscale.S:1.2 Thu Jun 21 21:37:04 2007
+++ src/common/lib/libc/arch/arm/string/memcpy_xscale.S Sun Aug 11 04:56:32 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: memcpy_xscale.S,v 1.2 2007/06/21 21:37:04 scw Exp $ */
+/* $NetBSD: memcpy_xscale.S,v 1.3 2013/08/11 04:56:32 matt Exp $ */
/*
* Copyright 2003 Wasabi Systems, Inc.
@@ -51,12 +51,12 @@ ENTRY(memcpy)
ldrb ip, [r1], #0x01
sub r2, r2, #0x01
strb ip, [r3], #0x01
- ldrleb ip, [r1], #0x01
+ ldrble ip, [r1], #0x01
suble r2, r2, #0x01
- strleb ip, [r3], #0x01
- ldrltb ip, [r1], #0x01
+ strble ip, [r3], #0x01
+ ldrblt ip, [r1], #0x01
sublt r2, r2, #0x01
- strltb ip, [r3], #0x01
+ strblt ip, [r3], #0x01
/* Destination buffer is now word aligned */
.Lmemcpy_wordaligned:
@@ -66,7 +66,7 @@ ENTRY(memcpy)
/* Quad-align the destination buffer */
tst r3, #0x07 /* Already quad aligned? */
ldrne ip, [r1], #0x04
- stmfd sp!, {r4-r9} /* Free up some registers */
+ push {r4-r9} /* Free up some registers */
subne r2, r2, #0x04
strne ip, [r3], #0x04
@@ -133,8 +133,8 @@ ENTRY(memcpy)
.Lmemcpy_w_lessthan128:
adds r2, r2, #0x80 /* Adjust for extra sub */
- ldmeqfd sp!, {r4-r9}
- bxeq lr /* Return now if done */
+ popeq {r4-r9}
+ RETc(eq) /* Return now if done */
subs r2, r2, #0x20
blt .Lmemcpy_w_lessthan32
@@ -158,8 +158,8 @@ ENTRY(memcpy)
.Lmemcpy_w_lessthan32:
adds r2, r2, #0x20 /* Adjust for extra sub */
- ldmeqfd sp!, {r4-r9}
- bxeq lr /* Return now if done */
+ popeq {r4-r9}
+ RETc(eq) /* Return now if done */
and r4, r2, #0x18
rsbs r4, r4, #0x18
@@ -185,21 +185,21 @@ ENTRY(memcpy)
strd r4, [r3], #0x08
/* Less than 8 bytes remaining */
- ldmfd sp!, {r4-r9}
- bxeq lr /* Return now if done */
+ pop {r4-r9}
+ RETc(eq) /* Return now if done */
subs r2, r2, #0x04
ldrge ip, [r1], #0x04
strge ip, [r3], #0x04
- bxeq lr /* Return now if done */
+ RETc(eq) /* Return now if done */
addlt r2, r2, #0x04
ldrb ip, [r1], #0x01
cmp r2, #0x02
- ldrgeb r2, [r1], #0x01
+ ldrbge r2, [r1], #0x01
strb ip, [r3], #0x01
- ldrgtb ip, [r1]
- strgeb r2, [r3], #0x01
- strgtb ip, [r3]
- bx lr
+ ldrbgt ip, [r1]
+ strbge r2, [r3], #0x01
+ strbgt ip, [r3]
+ RET
/*
@@ -207,7 +207,7 @@ ENTRY(memcpy)
* The destination buffer is word aligned, but the source buffer is not.
*/
.Lmemcpy_bad_align:
- stmfd sp!, {r4-r7}
+ push {r4-r7}
bic r1, r1, #0x03
cmp ip, #2
ldr ip, [r1], #0x04
@@ -287,8 +287,8 @@ ENTRY(memcpy)
str r6, [r3], #0x04
str r7, [r3], #0x04
subs r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
- bxeq lr /* Return now if done */
+ popeq {r4-r7}
+ RETc(eq) /* Return now if done */
.Lmemcpy_bad1_loop16_short:
subs r2, r2, #0x04
@@ -385,8 +385,8 @@ ENTRY(memcpy)
str r6, [r3], #0x04
str r7, [r3], #0x04
subs r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
- bxeq lr /* Return now if done */
+ popeq {r4-r7}
+ RETc(eq) /* Return now if done */
.Lmemcpy_bad2_loop16_short:
subs r2, r2, #0x04
@@ -483,8 +483,8 @@ ENTRY(memcpy)
str r6, [r3], #0x04
str r7, [r3], #0x04
subs r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
- bxeq lr /* Return now if done */
+ popeq {r4-r7}
+ RETc(eq) /* Return now if done */
.Lmemcpy_bad3_loop16_short:
subs r2, r2, #0x04
@@ -509,17 +509,17 @@ ENTRY(memcpy)
sub r1, r1, #0x01
.Lmemcpy_bad_done:
- ldmfd sp!, {r4-r7}
+ pop {r4-r7}
adds r2, r2, #0x04
- bxeq lr
+ RETc(eq)
ldrb ip, [r1], #0x01
cmp r2, #0x02
- ldrgeb r2, [r1], #0x01
+ ldrbge r2, [r1], #0x01
strb ip, [r3], #0x01
- ldrgtb ip, [r1]
- strgeb r2, [r3], #0x01
- strgtb ip, [r3]
- bx lr
+ ldrbgt ip, [r1]
+ strbge r2, [r3], #0x01
+ strbgt ip, [r3]
+ RET
/*
@@ -531,7 +531,7 @@ ENTRY(memcpy)
#ifndef _STANDALONE
add pc, pc, r2, lsl #2
nop
- bx lr /* 0x00 */
+ RET /* 0x00 */
b .Lmemcpy_bytewise /* 0x01 */
b .Lmemcpy_bytewise /* 0x02 */
b .Lmemcpy_bytewise /* 0x03 */
@@ -550,9 +550,9 @@ ENTRY(memcpy)
ldrb ip, [r1], #0x01
1: subs r2, r2, #0x01
strb ip, [r3], #0x01
- ldrneb ip, [r1], #0x01
+ ldrbne ip, [r1], #0x01
bne 1b
- bx lr
+ RET
#ifndef _STANDALONE
/******************************************************************************
@@ -573,7 +573,7 @@ ENTRY(memcpy)
*/
ldr r2, [r1]
str r2, [r0]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -589,7 +589,7 @@ ENTRY(memcpy)
orr r3, r3, r2, lsl #24 /* r3 = 3210 */
#endif
str r3, [r0]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -604,7 +604,7 @@ ENTRY(memcpy)
#endif
orr r3, r2, r3, lsl #16
str r3, [r0]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -620,7 +620,7 @@ ENTRY(memcpy)
orr r3, r3, r2, lsl #8 /* r3 = 3210 */
#endif
str r3, [r0]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -639,7 +639,7 @@ ENTRY(memcpy)
strb r1, [r0, #0x03]
#endif
strh r3, [r0, #0x01]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -651,7 +651,7 @@ ENTRY(memcpy)
strb r2, [r0]
strh r3, [r0, #0x01]
strb r1, [r0, #0x03]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -672,7 +672,7 @@ ENTRY(memcpy)
#endif
strh r2, [r0, #0x01]
strb r3, [r0, #0x03]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -684,7 +684,7 @@ ENTRY(memcpy)
strb r2, [r0]
strh r3, [r0, #0x01]
strb r1, [r0, #0x03]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -700,7 +700,7 @@ ENTRY(memcpy)
mov r3, r2, lsr #16
strh r3, [r0, #0x02]
#endif
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -718,7 +718,7 @@ ENTRY(memcpy)
orr r2, r2, r3, lsl #8 /* r2 = xx32 */
#endif
strh r2, [r0, #0x02]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -728,7 +728,7 @@ ENTRY(memcpy)
ldrh r3, [r1, #0x02]
strh r2, [r0]
strh r3, [r0, #0x02]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -746,7 +746,7 @@ ENTRY(memcpy)
orr r3, r3, r2, lsr #24 /* r3 = 3210 */
#endif
strh r3, [r0]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -766,7 +766,7 @@ ENTRY(memcpy)
strh r3, [r0, #0x01]
strb r1, [r0, #0x03]
#endif
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -778,7 +778,7 @@ ENTRY(memcpy)
strb r2, [r0]
strh r3, [r0, #0x01]
strb r1, [r0, #0x03]
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -803,7 +803,7 @@ ENTRY(memcpy)
mov r3, r3, lsr #8 /* r3 = ...3 */
strb r3, [r0, #0x03]
#endif
- bx lr
+ RET
LMEMCPY_4_PAD
/*
@@ -815,7 +815,7 @@ ENTRY(memcpy)
strb r2, [r0]
strh r3, [r0, #0x01]
strb r1, [r0, #0x03]
- bx lr
+ RET
LMEMCPY_4_PAD
@@ -839,7 +839,7 @@ ENTRY(memcpy)
ldrh r3, [r1, #0x04]
str r2, [r0]
strh r3, [r0, #0x04]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -857,7 +857,7 @@ ENTRY(memcpy)
mov r3, r3, lsr #8 /* BE:r3 = .345 LE:r3 = .x54 */
str r2, [r0]
strh r3, [r0, #0x04]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -876,7 +876,7 @@ ENTRY(memcpy)
str r2, [r0]
strh r1, [r0, #0x04]
#endif
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -898,7 +898,7 @@ ENTRY(memcpy)
#endif
str r2, [r0]
strh r1, [r0, #0x04]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -921,7 +921,7 @@ ENTRY(memcpy)
#endif
strh r3, [r0, #0x03]
strb r2, [r0, #0x05]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -935,7 +935,7 @@ ENTRY(memcpy)
strh r3, [r0, #0x01]
strh ip, [r0, #0x03]
strb r1, [r0, #0x05]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -962,7 +962,7 @@ ENTRY(memcpy)
orr r3, r3, r1, lsl #8 /* r3 = 4321 */
strh r3, [r0, #0x01]
#endif
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -976,7 +976,7 @@ ENTRY(memcpy)
strh r3, [r0, #0x01]
strh ip, [r0, #0x03]
strb r1, [r0, #0x05]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -997,7 +997,7 @@ ENTRY(memcpy)
strh r3, [r0]
str r2, [r0, #0x02]
#endif
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -1015,7 +1015,7 @@ ENTRY(memcpy)
#endif
strh r1, [r0]
str r2, [r0, #0x02]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -1025,7 +1025,7 @@ ENTRY(memcpy)
ldr r3, [r1, #0x02]
strh r2, [r0]
str r3, [r0, #0x02]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -1045,7 +1045,7 @@ ENTRY(memcpy)
#endif
strh r3, [r0]
str r1, [r0, #0x02]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -1066,7 +1066,7 @@ ENTRY(memcpy)
#endif
str r2, [r0, #0x01]
strb r1, [r0, #0x05]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -1080,7 +1080,7 @@ ENTRY(memcpy)
strh r3, [r0, #0x01]
strh ip, [r0, #0x03]
strb r1, [r0, #0x05]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -1101,7 +1101,7 @@ ENTRY(memcpy)
#endif
str r2, [r0, #0x01]
strb r1, [r0, #0x05]
- bx lr
+ RET
LMEMCPY_6_PAD
/*
@@ -1113,7 +1113,7 @@ ENTRY(memcpy)
strb r2, [r0]
str r3, [r0, #0x01]
strb r1, [r0, #0x05]
- bx lr
+ RET
LMEMCPY_6_PAD
@@ -1137,7 +1137,7 @@ ENTRY(memcpy)
ldr r3, [r1, #0x04]
str r2, [r0]
str r3, [r0, #0x04]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1158,7 +1158,7 @@ ENTRY(memcpy)
#endif
str r3, [r0]
str r2, [r0, #0x04]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1178,7 +1178,7 @@ ENTRY(memcpy)
#endif
str r2, [r0]
str r3, [r0, #0x04]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1199,7 +1199,7 @@ ENTRY(memcpy)
#endif
str r3, [r0]
str r2, [r0, #0x04]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1224,7 +1224,7 @@ ENTRY(memcpy)
#endif
strh r1, [r0, #0x01]
str r3, [r0, #0x03]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1238,7 +1238,7 @@ ENTRY(memcpy)
strh r3, [r0, #0x01]
str ip, [r0, #0x03]
strb r1, [r0, #0x07]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1266,7 +1266,7 @@ ENTRY(memcpy)
#endif
strh ip, [r0, #0x01]
str r3, [r0, #0x03]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1287,7 +1287,7 @@ ENTRY(memcpy)
#endif
str r2, [r0, #0x03]
strb r1, [r0, #0x07]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1307,7 +1307,7 @@ ENTRY(memcpy)
#endif
str r2, [r0, #0x02]
strh r3, [r0, #0x06]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1330,7 +1330,7 @@ ENTRY(memcpy)
#endif
str r1, [r0, #0x02]
strh r3, [r0, #0x06]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1342,7 +1342,7 @@ ENTRY(memcpy)
strh r2, [r0]
str ip, [r0, #0x02]
strh r3, [r0, #0x06]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1365,7 +1365,7 @@ ENTRY(memcpy)
#endif
str r3, [r0, #0x02]
strh r2, [r0]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1390,7 +1390,7 @@ ENTRY(memcpy)
orr r2, r2, r3, lsl #24 /* r2 = 4321 */
str r2, [r0, #0x01]
#endif
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1411,7 +1411,7 @@ ENTRY(memcpy)
#endif
str r2, [r0, #0x01]
strb r1, [r0, #0x07]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1439,7 +1439,7 @@ ENTRY(memcpy)
#endif
str ip, [r0, #0x01]
strh r1, [r0, #0x05]
- bx lr
+ RET
LMEMCPY_8_PAD
/*
@@ -1453,7 +1453,7 @@ ENTRY(memcpy)
str ip, [r0, #0x01]
strh r3, [r0, #0x05]
strb r1, [r0, #0x07]
- bx lr
+ RET
LMEMCPY_8_PAD
/******************************************************************************
@@ -1478,7 +1478,7 @@ ENTRY(memcpy)
str r2, [r0]
str r3, [r0, #0x04]
str r1, [r0, #0x08]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1506,7 +1506,7 @@ ENTRY(memcpy)
#endif
str r2, [r0, #0x04]
str r1, [r0]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1533,7 +1533,7 @@ ENTRY(memcpy)
#endif
str r3, [r0, #0x04]
str r1, [r0, #0x08]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1561,7 +1561,7 @@ ENTRY(memcpy)
#endif
str r3, [r0, #0x04]
str r1, [r0, #0x08]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1590,7 +1590,7 @@ ENTRY(memcpy)
str r2, [r0, #0x03]
str r1, [r0, #0x07]
strb ip, [r0, #0x0b]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1606,7 +1606,7 @@ ENTRY(memcpy)
str ip, [r0, #0x03]
str r2, [r0, #0x07]
strb r1, [r0, #0x0b]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1640,7 +1640,7 @@ ENTRY(memcpy)
str r3, [r0, #0x03]
str r2, [r0, #0x07]
strb r1, [r0, #0x0b]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1670,7 +1670,7 @@ ENTRY(memcpy)
str r3, [r0, #0x03]
str ip, [r0, #0x07]
strb r1, [r0, #0x0b]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1696,7 +1696,7 @@ ENTRY(memcpy)
str r1, [r0, #0x02]
str r3, [r0, #0x06]
strh r2, [r0, #0x0a]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1725,7 +1725,7 @@ ENTRY(memcpy)
str r2, [r0, #0x02]
str r3, [r0, #0x06]
strh r1, [r0, #0x0a]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1739,7 +1739,7 @@ ENTRY(memcpy)
str r3, [r0, #0x02]
str ip, [r0, #0x06]
strh r1, [r0, #0x0a]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1768,7 +1768,7 @@ ENTRY(memcpy)
str r2, [r0, #0x06]
str r3, [r0, #0x02]
strh r1, [r0]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1802,7 +1802,7 @@ ENTRY(memcpy)
mov r1, r1, lsr #16 /* r1 = ...B */
strb r1, [r0, #0x0b]
#endif
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1832,7 +1832,7 @@ ENTRY(memcpy)
str r3, [r0, #0x05]
str ip, [r0, #0x01]
strb r1, [r0]
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1873,7 +1873,7 @@ ENTRY(memcpy)
strh ip, [r0, #0x09]
strb r1, [r0, #0x0b]
#endif
- bx lr
+ RET
LMEMCPY_C_PAD
/*
@@ -1889,5 +1889,5 @@ ENTRY(memcpy)
str ip, [r0, #0x05]
strh r2, [r0, #0x09]
strb r1, [r0, #0x0b]
- bx lr
+ RET
#endif /* !_STANDALONE */
Index: src/common/lib/libc/arch/arm/string/strcpy_arm.S
diff -u src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.2 src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.3
--- src/common/lib/libc/arch/arm/string/strcpy_arm.S:1.2 Thu Jan 10 04:51:49 2013
+++ src/common/lib/libc/arch/arm/string/strcpy_arm.S Sun Aug 11 04:56:32 2013
@@ -29,7 +29,7 @@
#include <machine/asm.h>
-RCSID("$NetBSD: strcpy_arm.S,v 1.2 2013/01/10 04:51:49 matt Exp $")
+RCSID("$NetBSD: strcpy_arm.S,v 1.3 2013/08/11 04:56:32 matt Exp $")
#ifdef STRLCPY
#ifdef _LIBC
@@ -85,7 +85,7 @@ ENTRY(FUNCNAME)
cmp r2, #1 /* is length 1 or less? */
bhi 1f /* no, do normal */
moveq r3, #0 /* = 1? load NUL */
- streqb r3, [r0] /* = 1? write NUL to dst */
+ strbeq r3, [r0] /* = 1? write NUL to dst */
mov r0, r1 /* move src to r0 */
b PLT_SYM(_C_LABEL(strlen)) /* and tailcall strlen */
1:
@@ -125,7 +125,7 @@ ENTRY(FUNCNAME)
beq .Lend_of_string /* yes, we are done */
#if defined(STRLCPY)
subs r2, r2, #1 /* subtract one from count */
- streqb r2, [r0], #1 /* zero? write trailing NUL */
+ strbeq r2, [r0], #1 /* zero? write trailing NUL */
beq .Ldst_full /* zero? the dst has no more room */
#endif
b .Ldst_align /* loop around for next byte */
@@ -423,7 +423,7 @@ ENTRY(FUNCNAME)
cmp r2, #-1 /* tried to write 3 bytes? */
blt 1f /* less, partial word write */
cmp r2, #0 /* no space left? */
- streqb r2, [r0] /* write the final NUL */
+ strbeq r2, [r0] /* write the final NUL */
bicne r5, r5, #BYTE3 /* clear trailing NUL */
strne r5, [r0] /* write last word */
b .Ldst_full_word_aligned /* the dst buffer is full */
Index: src/common/lib/libc/arch/arm/string/memmove.S
diff -u src/common/lib/libc/arch/arm/string/memmove.S:1.4 src/common/lib/libc/arch/arm/string/memmove.S:1.5
--- src/common/lib/libc/arch/arm/string/memmove.S:1.4 Mon Jan 28 06:23:44 2013
+++ src/common/lib/libc/arch/arm/string/memmove.S Sun Aug 11 04:56:32 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: memmove.S,v 1.4 2013/01/28 06:23:44 matt Exp $ */
+/* $NetBSD: memmove.S,v 1.5 2013/08/11 04:56:32 matt Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@ ENTRY(bcopy)
moveq r0, #0 /* Quick abort for len=0 */
RETc(eq)
- stmdb sp!, {r0, lr} /* memmove() returns dest addr */
+ push {r0, lr} /* memmove() returns dest addr */
subs r2, r2, #4
blt .Lmemmove_fl4 /* less than 4 bytes */
ands r12, r0, #3
@@ -76,7 +76,7 @@ ENTRY(bcopy)
blt .Lmemmove_fl12 /* less than 12 bytes (4 from above) */
subs r2, r2, #0x14
blt .Lmemmove_fl32 /* less than 32 bytes (12 from above) */
- stmdb sp!, {r4} /* borrow r4 */
+ push {r4} /* borrow r4 */
/* blat 32 bytes at a time */
/* XXX for really big copies perhaps we should use more registers */
@@ -89,19 +89,19 @@ ENTRY(bcopy)
bge .Lmemmove_floop32
cmn r2, #0x10
- ldmgeia r1!, {r3, r4, r12, lr} /* blat a remaining 16 bytes */
- stmgeia r0!, {r3, r4, r12, lr}
+ ldmiage r1!, {r3, r4, r12, lr} /* blat a remaining 16 bytes */
+ stmiage r0!, {r3, r4, r12, lr}
subge r2, r2, #0x10
- ldmia sp!, {r4} /* return r4 */
+ pop {r4} /* return r4 */
.Lmemmove_fl32:
adds r2, r2, #0x14
/* blat 12 bytes at a time */
.Lmemmove_floop12:
- ldmgeia r1!, {r3, r12, lr}
- stmgeia r0!, {r3, r12, lr}
- subges r2, r2, #0x0c
+ ldmiage r1!, {r3, r12, lr}
+ stmiage r0!, {r3, r12, lr}
+ subsge r2, r2, #0x0c
bge .Lmemmove_floop12
.Lmemmove_fl12:
@@ -111,24 +111,24 @@ ENTRY(bcopy)
subs r2, r2, #4
ldrlt r3, [r1], #4
strlt r3, [r0], #4
- ldmgeia r1!, {r3, r12}
- stmgeia r0!, {r3, r12}
+ ldmiage r1!, {r3, r12}
+ stmiage r0!, {r3, r12}
subge r2, r2, #4
.Lmemmove_fl4:
/* less than 4 bytes to go */
adds r2, r2, #4
- ldmeqia sp!, {r0, pc} /* done */
+ popeq {r0, pc} /* done */
/* copy the crud byte at a time */
cmp r2, #2
ldrb r3, [r1], #1
strb r3, [r0], #1
- ldrgeb r3, [r1], #1
- strgeb r3, [r0], #1
- ldrgtb r3, [r1], #1
- strgtb r3, [r0], #1
- ldmia sp!, {r0, pc}
+ ldrbge r3, [r1], #1
+ strbge r3, [r0], #1
+ ldrbgt r3, [r1], #1
+ strbgt r3, [r0], #1
+ pop {r0, pc}
/* erg - unaligned destination */
.Lmemmove_fdestul:
@@ -138,10 +138,10 @@ ENTRY(bcopy)
/* align destination with byte copies */
ldrb r3, [r1], #1
strb r3, [r0], #1
- ldrgeb r3, [r1], #1
- strgeb r3, [r0], #1
- ldrgtb r3, [r1], #1
- strgtb r3, [r0], #1
+ ldrbge r3, [r1], #1
+ strbge r3, [r0], #1
+ ldrbgt r3, [r1], #1
+ strbgt r3, [r0], #1
subs r2, r2, r12
blt .Lmemmove_fl4 /* less the 4 bytes */
@@ -159,7 +159,7 @@ ENTRY(bcopy)
cmp r2, #0x0c
blt .Lmemmove_fsrcul1loop4
sub r2, r2, #0x0c
- stmdb sp!, {r4, r5}
+ push {r4, r5}
.Lmemmove_fsrcul1loop16:
#ifdef __ARMEB__
@@ -188,7 +188,7 @@ ENTRY(bcopy)
stmia r0!, {r3-r5, r12}
subs r2, r2, #0x10
bge .Lmemmove_fsrcul1loop16
- ldmia sp!, {r4, r5}
+ pop {r4, r5}
adds r2, r2, #0x0c
blt .Lmemmove_fsrcul1l4
@@ -216,7 +216,7 @@ ENTRY(bcopy)
cmp r2, #0x0c
blt .Lmemmove_fsrcul2loop4
sub r2, r2, #0x0c
- stmdb sp!, {r4, r5}
+ push {r4, r5}
.Lmemmove_fsrcul2loop16:
#ifdef __ARMEB__
@@ -245,7 +245,7 @@ ENTRY(bcopy)
stmia r0!, {r3-r5, r12}
subs r2, r2, #0x10
bge .Lmemmove_fsrcul2loop16
- ldmia sp!, {r4, r5}
+ pop {r4, r5}
adds r2, r2, #0x0c
blt .Lmemmove_fsrcul2l4
@@ -273,7 +273,7 @@ ENTRY(bcopy)
cmp r2, #0x0c
blt .Lmemmove_fsrcul3loop4
sub r2, r2, #0x0c
- stmdb sp!, {r4, r5}
+ push {r4, r5}
.Lmemmove_fsrcul3loop16:
#ifdef __ARMEB__
@@ -302,7 +302,7 @@ ENTRY(bcopy)
stmia r0!, {r3-r5, r12}
subs r2, r2, #0x10
bge .Lmemmove_fsrcul3loop16
- ldmia sp!, {r4, r5}
+ pop {r4, r5}
adds r2, r2, #0x0c
blt .Lmemmove_fsrcul3l4
@@ -340,7 +340,7 @@ ENTRY(bcopy)
/* We have aligned source and destination */
subs r2, r2, #8
blt .Lmemmove_bl12 /* less than 12 bytes (4 from above) */
- stmdb sp!, {r4, lr}
+ push {r4, lr}
subs r2, r2, #0x14 /* less than 32 bytes (12 from above) */
blt .Lmemmove_bl32
@@ -356,14 +356,14 @@ ENTRY(bcopy)
.Lmemmove_bl32:
cmn r2, #0x10
- ldmgedb r1!, {r3, r4, r12, lr} /* blat a remaining 16 bytes */
- stmgedb r0!, {r3, r4, r12, lr}
+ ldmdbge r1!, {r3, r4, r12, lr} /* blat a remaining 16 bytes */
+ stmdbge r0!, {r3, r4, r12, lr}
subge r2, r2, #0x10
adds r2, r2, #0x14
- ldmgedb r1!, {r3, r12, lr} /* blat a remaining 12 bytes */
- stmgedb r0!, {r3, r12, lr}
+ ldmdbge r1!, {r3, r12, lr} /* blat a remaining 12 bytes */
+ stmdbge r0!, {r3, r12, lr}
subge r2, r2, #0x0c
- ldmia sp!, {r4, lr}
+ pop {r4, lr}
.Lmemmove_bl12:
adds r2, r2, #8
@@ -371,8 +371,8 @@ ENTRY(bcopy)
subs r2, r2, #4
ldrlt r3, [r1, #-4]!
strlt r3, [r0, #-4]!
- ldmgedb r1!, {r3, r12}
- stmgedb r0!, {r3, r12}
+ ldmdbge r1!, {r3, r12}
+ stmdbge r0!, {r3, r12}
subge r2, r2, #4
.Lmemmove_bl4:
@@ -384,10 +384,10 @@ ENTRY(bcopy)
cmp r2, #2
ldrb r3, [r1, #-1]!
strb r3, [r0, #-1]!
- ldrgeb r3, [r1, #-1]!
- strgeb r3, [r0, #-1]!
- ldrgtb r3, [r1, #-1]!
- strgtb r3, [r0, #-1]!
+ ldrbge r3, [r1, #-1]!
+ strbge r3, [r0, #-1]!
+ ldrbgt r3, [r1, #-1]!
+ strbgt r3, [r0, #-1]!
RET
/* erg - unaligned destination */
@@ -397,10 +397,10 @@ ENTRY(bcopy)
/* align destination with byte copies */
ldrb r3, [r1, #-1]!
strb r3, [r0, #-1]!
- ldrgeb r3, [r1, #-1]!
- strgeb r3, [r0, #-1]!
- ldrgtb r3, [r1, #-1]!
- strgtb r3, [r0, #-1]!
+ ldrbge r3, [r1, #-1]!
+ strbge r3, [r0, #-1]!
+ ldrbgt r3, [r1, #-1]!
+ strbgt r3, [r0, #-1]!
subs r2, r2, r12
blt .Lmemmove_bl4 /* less than 4 bytes to go */
ands r12, r1, #3
@@ -417,7 +417,7 @@ ENTRY(bcopy)
cmp r2, #0x0c
blt .Lmemmove_bsrcul3loop4
sub r2, r2, #0x0c
- stmdb sp!, {r4, r5, lr}
+ push {r4, r5, lr}
.Lmemmove_bsrcul3loop16:
#ifdef __ARMEB__
@@ -446,7 +446,7 @@ ENTRY(bcopy)
stmdb r0!, {r4, r5, r12, lr}
subs r2, r2, #0x10
bge .Lmemmove_bsrcul3loop16
- ldmia sp!, {r4, r5, lr}
+ pop {r4, r5, lr}
adds r2, r2, #0x0c
blt .Lmemmove_bsrcul3l4
@@ -474,7 +474,7 @@ ENTRY(bcopy)
cmp r2, #0x0c
blt .Lmemmove_bsrcul2loop4
sub r2, r2, #0x0c
- stmdb sp!, {r4, r5, lr}
+ push {r4, r5, lr}
.Lmemmove_bsrcul2loop16:
#ifdef __ARMEB__
@@ -503,7 +503,7 @@ ENTRY(bcopy)
stmdb r0!, {r4, r5, r12, lr}
subs r2, r2, #0x10
bge .Lmemmove_bsrcul2loop16
- ldmia sp!, {r4, r5, lr}
+ pop {r4, r5, lr}
adds r2, r2, #0x0c
blt .Lmemmove_bsrcul2l4
@@ -531,7 +531,7 @@ ENTRY(bcopy)
cmp r2, #0x0c
blt .Lmemmove_bsrcul1loop4
sub r2, r2, #0x0c
- stmdb sp!, {r4, r5, lr}
+ push {r4, r5, lr}
.Lmemmove_bsrcul1loop32:
#ifdef __ARMEB__
@@ -560,7 +560,7 @@ ENTRY(bcopy)
stmdb r0!, {r4, r5, r12, lr}
subs r2, r2, #0x10
bge .Lmemmove_bsrcul1loop32
- ldmia sp!, {r4, r5, lr}
+ pop {r4, r5, lr}
adds r2, r2, #0x0c
blt .Lmemmove_bsrcul1l4