summaryrefslogtreecommitdiffstats
path: root/sys/lib/libkern/arch
diff options
context:
space:
mode:
authorjsg <jsg@openbsd.org>2015-06-08 14:22:05 +0000
committerjsg <jsg@openbsd.org>2015-06-08 14:22:05 +0000
commitc6b709f57b9f0eb79d5cd435ebd6ead1f648a81f (patch)
treed34f59e202e510eb4663d503ef0d259fda2a6fd6 /sys/lib/libkern/arch
parentMerge multiple copies of the code doing VLAN tag insertion back into (diff)
downloadwireguard-openbsd-c6b709f57b9f0eb79d5cd435ebd6ead1f648a81f.tar.xz
wireguard-openbsd-c6b709f57b9f0eb79d5cd435ebd6ead1f648a81f.zip
At some point arm moved to a unified syntax for arm and thumb instructions.
While binutils supports both "unified" and "divided" syntax (defaulting to divided) the integrated assembler in clang only supports unified names so switch some files to unified syntax. Similiar changes were made in bitrig and freebsd. No difference in objdump -d output. tested on zaurus by deraadt@, ok miod@
Diffstat (limited to 'sys/lib/libkern/arch')
-rw-r--r--sys/lib/libkern/arch/arm/memcpy.S68
-rw-r--r--sys/lib/libkern/arch/arm/memset.S14
2 files changed, 43 insertions, 39 deletions
diff --git a/sys/lib/libkern/arch/arm/memcpy.S b/sys/lib/libkern/arch/arm/memcpy.S
index 998250d9968..fade0f032a7 100644
--- a/sys/lib/libkern/arch/arm/memcpy.S
+++ b/sys/lib/libkern/arch/arm/memcpy.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: memcpy.S,v 1.5 2014/12/30 08:12:52 jsg Exp $ */
+/* $OpenBSD: memcpy.S,v 1.6 2015/06/08 14:22:05 jsg Exp $ */
/* $NetBSD: memcpy.S,v 1.2 2001/11/20 00:29:20 chris Exp $ */
/*-
@@ -63,6 +63,8 @@
* Apologies for the state of the comments ;-)
*/
+.syntax unified
+
ENTRY(memcpy)
ENTRY_NP(memmove)
/* Determine copy direction */
@@ -102,8 +104,8 @@ Lmemcpy_floop32:
bge Lmemcpy_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 */
@@ -112,9 +114,9 @@ Lmemcpy_fl32:
/* blat 12 bytes at a time */
Lmemcpy_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 Lmemcpy_floop12
Lmemcpy_fl12:
@@ -124,26 +126,26 @@ Lmemcpy_fl12:
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_fl4:
/* 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 */
+ ldmiaeq sp!, {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
+ ldrbge r3, [r1], #1
+ strbge r3, [r0], #1
+ ldrbgt r3, [r1], #1
+ strbgt r3, [r0], #1
ldmia sp!, {r0, pc}
/* erg - unaligned destination */
@@ -154,10 +156,10 @@ Lmemcpy_fdestul:
/* 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_fl4 /* less the 4 bytes */
@@ -306,12 +308,12 @@ Lmemcpy_bloop32:
Lmemcpy_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}
@@ -321,23 +323,23 @@ Lmemcpy_bl12:
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
Lmemcpy_bl4:
/* less than 4 bytes to go */
adds r2, r2, #4
- ldmeqia sp!, {r0, pc}
+ ldmiaeq sp!, {r0, pc}
/* 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]!
+ ldrbge r3, [r1, #-1]!
+ strbge r3, [r0, #-1]!
+ ldrbgt r3, [r1, #-1]!
+ strbgt r3, [r0, #-1]!
ldmia sp!, {r0, pc}
/* erg - unaligned destination */
@@ -347,10 +349,10 @@ Lmemcpy_bdestul:
/* 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_bl4 /* less than 4 bytes to go */
ands r12, r1, #3
diff --git a/sys/lib/libkern/arch/arm/memset.S b/sys/lib/libkern/arch/arm/memset.S
index 1635c81f7b9..9497448e98c 100644
--- a/sys/lib/libkern/arch/arm/memset.S
+++ b/sys/lib/libkern/arch/arm/memset.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: memset.S,v 1.3 2014/12/30 08:12:52 jsg Exp $ */
+/* $OpenBSD: memset.S,v 1.4 2015/06/08 14:22:05 jsg Exp $ */
/* $NetBSD: memset.S,v 1.1 2000/12/29 20:51:57 bjh21 Exp $ */
/*
@@ -47,6 +47,8 @@
* r0 - dest address
*/
+.syntax unified
+
ENTRY(memset)
stmfd sp!, {r0} /* Remember address for return value */
and r1, r1, #0x000000ff /* We write bytes */
@@ -63,8 +65,8 @@ ENTRY(memset)
sub r2, r2, r3
cmp r3, #0x00000002
strb r1, [r0], #0x0001 /* Set 1 byte */
- strgeb r1, [r0], #0x0001 /* Set another byte */
- strgtb r1, [r0], #0x0001 /* and a third */
+ strbge r1, [r0], #0x0001 /* Set another byte */
+ strbgt r1, [r0], #0x0001 /* and a third */
cmp r2, #0x00000004
blt Lmemset_lessthanfour
@@ -115,13 +117,13 @@ Lmemset_loop4:
Lmemset_lessthanfour:
cmp r2, #0x00000000
- ldmeqfd sp!, {r0}
+ ldmfdeq sp!, {r0}
moveq pc, lr /* Zero length so exit */
cmp r2, #0x00000002
strb r1, [r0], #0x0001 /* Set 1 byte */
- strgeb r1, [r0], #0x0001 /* Set another byte */
- strgtb r1, [r0], #0x0001 /* and a third */
+ strbge r1, [r0], #0x0001 /* Set another byte */
+ strbgt r1, [r0], #0x0001 /* and a third */
ldmfd sp!, {r0}
mov pc, lr /* Exit */