svn commit: r275767 - in stable/10: lib/libc/arm/string sys/arm/arm sys/arm/include sys/arm/ti sys/arm/xscale/ixp425 sys/libkern/arm
Andrew Turner
andrew at FreeBSD.org
Sun Dec 14 16:28:58 UTC 2014
Author: andrew
Date: Sun Dec 14 16:28:53 2014
New Revision: 275767
URL: https://svnweb.freebsd.org/changeset/base/275767
Log:
Clean up our ARM assembly:
MFC 275256:
Switch to the ARM unified assembly language as the clang integrated as only
supports it. Binutils supports it when the ".syntax unified" directive
is set.
Sponsored by: ABT Systems Ltd
MFC 275264:
Update _ENTRY to use _EENTRY to reduce the common code.
MFC 275321:
Remove extra labels, ENTRY_NP already provides them.
Sponsored by: ABT Systems Ltd
MFC 275322:
Correctly a few incorrect uses of ENTRY/EENTRY and END/EEND
Sponsored by: ABT Systems Ltd
MFC 275416:
Fix the name of the coprocessor to include the "p" prefix, the clang
integrated assembler expects this.
Sponsored by: ABT Systems Ltd
MFC 275418:
Switch to unified syntax so these can be built with clang 3.5.
Sponsored by: ABT Systems Ltd
MFC 275519:
Add missing END macros to some of the xscale functions.
Sponsored by: ABT Systems Ltd
MFC 275520:
Use the unified syntax in a few more assembly files
Sponsored by: ABT Systems Ltd
MFC 275521:
Set the alignment to 4-bytes after a string as clang 3.5 can switch to
thumb mode if this is incorrect.
Sponsored by: ABT Systems Ltd
MFC 275522:
Place the literal pool after a RET otherwise clang 3.5 tries to put it too
far away from a ldr psuedo instruction. With this clang will place the
literal value here where it's close enough to be loaded.
Sponsored by: ABT Systems Ltd
MFC 275523:
Switch to an armv6k cpu, without this clang 3.5 complains "bx lr" is
unsupported as it needs a newer cpu.
Sponsored by: ABT Systems Ltd
MFC 275524:
Switch to a .cpu directive. These will work when clang 3.5 is imported
where the .arch directive is a nop.
Sponsored by: ABT Systems Ltd
Modified:
stable/10/lib/libc/arm/string/ffs.S
stable/10/lib/libc/arm/string/memcmp.S
stable/10/lib/libc/arm/string/memcpy_arm.S
stable/10/lib/libc/arm/string/memcpy_xscale.S
stable/10/lib/libc/arm/string/memmove.S
stable/10/lib/libc/arm/string/memset.S
stable/10/lib/libc/arm/string/strlen.S
stable/10/sys/arm/arm/bcopyinout_xscale.S
stable/10/sys/arm/arm/blockio.S
stable/10/sys/arm/arm/cpufunc_asm_arm11x6.S
stable/10/sys/arm/arm/cpufunc_asm_armv5.S
stable/10/sys/arm/arm/cpufunc_asm_xscale_c3.S
stable/10/sys/arm/arm/fusu.S
stable/10/sys/arm/arm/in_cksum_arm.S
stable/10/sys/arm/arm/locore.S
stable/10/sys/arm/arm/support.S
stable/10/sys/arm/include/asm.h
stable/10/sys/arm/ti/ti_smc.S
stable/10/sys/arm/xscale/ixp425/ixp425_a4x_io.S
stable/10/sys/arm/xscale/ixp425/ixp425_pci_asm.S
stable/10/sys/libkern/arm/ffs.S
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/lib/libc/arm/string/ffs.S
==============================================================================
--- stable/10/lib/libc/arm/string/ffs.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/lib/libc/arm/string/ffs.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -32,6 +32,8 @@
__FBSDID("$FreeBSD$");
+.syntax unified
+
/*
* ffs - find first set bit, this algorithm isolates the first set
* bit, then multiplies the number by 0x0450fbaf which leaves the top
@@ -60,7 +62,7 @@ ENTRY(ffs)
rsbne r0, r0, r0, lsl #16 /* r0 = X * 0x0450fbaf */
/* now lookup in table indexed on top 6 bits of r0 */
- ldrneb r0, [ r2, r0, lsr #26 ]
+ ldrbne r0, [ r2, r0, lsr #26 ]
RET
.text;
Modified: stable/10/lib/libc/arm/string/memcmp.S
==============================================================================
--- stable/10/lib/libc/arm/string/memcmp.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/lib/libc/arm/string/memcmp.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -66,6 +66,8 @@
__FBSDID("$FreeBSD$");
+.syntax unified
+
ENTRY(memcmp)
mov ip, r0
#if defined(_KERNEL) && !defined(_STANDALONE)
@@ -76,7 +78,7 @@ ENTRY(memcmp)
/* Are both addresses aligned the same way? */
cmp r2, #0x00
- eornes r3, ip, r1
+ eorsne r3, ip, r1
RETeq /* len == 0, or same addresses! */
tst r3, #0x03
subne r2, r2, #0x01
Modified: stable/10/lib/libc/arm/string/memcpy_arm.S
==============================================================================
--- stable/10/lib/libc/arm/string/memcpy_arm.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/lib/libc/arm/string/memcpy_arm.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -31,6 +31,9 @@
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
+
+.syntax unified
+
/*
* This is one fun bit of code ...
* Some easy listening music is suggested while trying to understand this
@@ -91,8 +94,8 @@ 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 */
@@ -101,9 +104,9 @@ ENTRY(memcpy)
/* 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:
@@ -113,26 +116,26 @@ 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 */
+ 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 */
@@ -143,10 +146,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 */
Modified: stable/10/lib/libc/arm/string/memcpy_xscale.S
==============================================================================
--- stable/10/lib/libc/arm/string/memcpy_xscale.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/lib/libc/arm/string/memcpy_xscale.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -38,6 +38,8 @@
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
+.syntax unified
+
/* LINTSTUB: Func: void *memcpy(void *dst, const void *src, size_t len) */
ENTRY(memcpy)
pld [r1]
@@ -52,12 +54,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:
@@ -134,7 +136,7 @@ ENTRY(memcpy)
.Lmemcpy_w_lessthan128:
adds r2, r2, #0x80 /* Adjust for extra sub */
- ldmeqfd sp!, {r4-r9}
+ ldmfdeq sp!, {r4-r9}
bxeq lr /* Return now if done */
subs r2, r2, #0x20
blt .Lmemcpy_w_lessthan32
@@ -159,7 +161,7 @@ ENTRY(memcpy)
.Lmemcpy_w_lessthan32:
adds r2, r2, #0x20 /* Adjust for extra sub */
- ldmeqfd sp!, {r4-r9}
+ ldmfdeq sp!, {r4-r9}
bxeq lr /* Return now if done */
and r4, r2, #0x18
@@ -195,11 +197,11 @@ ENTRY(memcpy)
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]
+ ldrbgt ip, [r1]
+ strbge r2, [r3], #0x01
+ strbgt ip, [r3]
bx lr
@@ -253,7 +255,7 @@ ENTRY(memcpy)
bge .Lmemcpy_bad1_loop16
adds r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
+ ldmfdeq sp!, {r4-r7}
bxeq lr /* Return now if done */
subs r2, r2, #0x04
sublt r1, r1, #0x03
@@ -314,7 +316,7 @@ ENTRY(memcpy)
bge .Lmemcpy_bad2_loop16
adds r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
+ ldmfdeq sp!, {r4-r7}
bxeq lr /* Return now if done */
subs r2, r2, #0x04
sublt r1, r1, #0x02
@@ -375,7 +377,7 @@ ENTRY(memcpy)
bge .Lmemcpy_bad3_loop16
adds r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
+ ldmfdeq sp!, {r4-r7}
bxeq lr /* Return now if done */
subs r2, r2, #0x04
sublt r1, r1, #0x01
@@ -404,11 +406,11 @@ ENTRY(memcpy)
bxeq lr
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]
+ ldrbgt ip, [r1]
+ strbge r2, [r3], #0x01
+ strbgt ip, [r3]
bx lr
@@ -440,7 +442,7 @@ 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
Modified: stable/10/lib/libc/arm/string/memmove.S
==============================================================================
--- stable/10/lib/libc/arm/string/memmove.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/lib/libc/arm/string/memmove.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -32,6 +32,8 @@
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
+.syntax unified
+
#ifndef _BCOPY
/* LINTSTUB: Func: void *memmove(void *, const void *, size_t) */
ENTRY(memmove)
@@ -86,8 +88,8 @@ 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 */
@@ -96,9 +98,9 @@ ENTRY(bcopy)
/* 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:
@@ -108,23 +110,23 @@ 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 */
+ ldmiaeq sp!, {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
+ ldrbge r3, [r1], #1
+ strbge r3, [r0], #1
+ ldrbgt r3, [r1], #1
+ strbgt r3, [r0], #1
ldmia sp!, {r0, pc}
/* erg - unaligned destination */
@@ -135,10 +137,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 */
@@ -353,12 +355,12 @@ 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}
@@ -368,8 +370,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:
@@ -381,10 +383,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 */
@@ -394,10 +396,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
Modified: stable/10/lib/libc/arm/string/memset.S
==============================================================================
--- stable/10/lib/libc/arm/string/memset.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/lib/libc/arm/string/memset.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -69,6 +69,8 @@
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
+.syntax unified
+
/*
* memset: Sets a block of memory to the specified value
*
@@ -125,39 +127,39 @@ ENTRY(memset)
.Lmemset_loop128:
subs r1, r1, #0x80
#ifdef _ARM_ARCH_5E
- 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
RETeq /* Zero length so just exit */
@@ -168,15 +170,15 @@ ENTRY(memset)
.Lmemset_loop32:
subs r1, r1, #0x20
#ifdef _ARM_ARCH_5E
- 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
RETeq /* Zero length so just exit */
@@ -185,11 +187,11 @@ ENTRY(memset)
/* Deal with 16 bytes or more */
#ifdef _ARM_ARCH_5E
- 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
RETeq /* Zero length so just exit */
@@ -212,17 +214,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 */
@@ -231,8 +233,8 @@ ENTRY(memset)
RETeq /* 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 */
#ifdef _BZERO
END(bzero)
Modified: stable/10/lib/libc/arm/string/strlen.S
==============================================================================
--- stable/10/lib/libc/arm/string/strlen.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/lib/libc/arm/string/strlen.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -27,6 +27,8 @@
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
+.syntax unified
+
ENTRY(strlen)
mov r1, #0
/* Check that the pointer is aligned on 32 bits. */
@@ -53,23 +55,23 @@ ENTRY(strlen)
addne r1, r1, #1
.Ldo_3:
#ifndef __ARMEB__
- andnes r3, r2, #0x0000ff00
+ andsne r3, r2, #0x0000ff00
#else
- andnes r3, r2, #0x00ff0000
+ andsne r3, r2, #0x00ff0000
#endif
addne r1, r1, #1
.Ldo_2:
#ifndef __ARMEB__
- andnes r3, r2, #0x00ff0000
+ andsne r3, r2, #0x00ff0000
#else
- andnes r3, r2, #0x0000ff00
+ andsne r3, r2, #0x0000ff00
#endif
addne r1, r1, #1
.Ldo_1:
#ifndef __ARMEB__
- andnes r3, r2, #0xff000000
+ andsne r3, r2, #0xff000000
#else
- andnes r3, r2, #0x000000ff
+ andsne r3, r2, #0x000000ff
#endif
addne r1, r1, #1
bne .Loop
Modified: stable/10/sys/arm/arm/bcopyinout_xscale.S
==============================================================================
--- stable/10/sys/arm/arm/bcopyinout_xscale.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/sys/arm/arm/bcopyinout_xscale.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -38,6 +38,7 @@
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
+ .syntax unified
.text
.align 0
@@ -104,8 +105,8 @@ ENTRY(copyin)
ldr r0, =EFAULT
str r11, [r10, #PCB_ONFAULT]
cmp r3, #0x00
- ldmgtfd sp!, {r4-r7} /* r3 > 0 Restore r4-r7 */
- ldmltfd sp!, {r4-r9} /* r3 < 0 Restore r4-r9 */
+ ldmfdgt sp!, {r4-r7} /* r3 > 0 Restore r4-r7 */
+ ldmfdlt sp!, {r4-r9} /* r3 < 0 Restore r4-r9 */
ldmfd sp!, {r10-r11, pc}
.Lcopyin_guts:
@@ -138,7 +139,7 @@ ENTRY(copyin)
/* Quad-align the destination buffer */
tst r1, #0x07 /* Already quad aligned? */
- ldrnet ip, [r0], #0x04
+ ldrtne ip, [r0], #0x04
strne ip, [r1], #0x04
subne r2, r2, #0x04
stmfd sp!, {r4-r9} /* Free up some registers */
@@ -207,7 +208,7 @@ ENTRY(copyin)
.Lcopyin_w_lessthan128:
adds r2, r2, #0x80 /* Adjust for extra sub */
- ldmeqfd sp!, {r4-r9}
+ ldmfdeq sp!, {r4-r9}
RETeq
subs r2, r2, #0x20
blt .Lcopyin_w_lessthan32
@@ -232,7 +233,7 @@ ENTRY(copyin)
.Lcopyin_w_lessthan32:
adds r2, r2, #0x20 /* Adjust for extra sub */
- ldmeqfd sp!, {r4-r9}
+ ldmfdeq sp!, {r4-r9}
RETeq /* Return now if done */
and r4, r2, #0x18
@@ -266,17 +267,17 @@ ENTRY(copyin)
.Lcopyin_w_less_than8:
subs r2, r2, #0x04
- ldrget ip, [r0], #0x04
+ ldrtge ip, [r0], #0x04
strge ip, [r1], #0x04
RETeq /* Return now if done */
addlt r2, r2, #0x04
ldrbt ip, [r0], #0x01
cmp r2, #0x02
- ldrgebt r2, [r0], #0x01
+ ldrbtge r2, [r0], #0x01
strb ip, [r1], #0x01
- ldrgtbt ip, [r0]
- strgeb r2, [r1], #0x01
- strgtb ip, [r1]
+ ldrbtgt ip, [r0]
+ strbge r2, [r1], #0x01
+ strbgt ip, [r1]
RET
/*
@@ -331,7 +332,7 @@ ENTRY(copyin)
bge .Lcopyin_bad1_loop16
adds r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
+ ldmfdeq sp!, {r4-r7}
RETeq /* Return now if done */
subs r2, r2, #0x04
sublt r0, r0, #0x03
@@ -392,7 +393,7 @@ ENTRY(copyin)
bge .Lcopyin_bad2_loop16
adds r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
+ ldmfdeq sp!, {r4-r7}
RETeq /* Return now if done */
subs r2, r2, #0x04
sublt r0, r0, #0x02
@@ -453,7 +454,7 @@ ENTRY(copyin)
bge .Lcopyin_bad3_loop16
adds r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
+ ldmfdeq sp!, {r4-r7}
RETeq /* Return now if done */
subs r2, r2, #0x04
sublt r0, r0, #0x01
@@ -546,8 +547,8 @@ ENTRY(copyout)
ldr r0, =EFAULT
str r11, [r10, #PCB_ONFAULT]
cmp r3, #0x00
- ldmgtfd sp!, {r4-r7} /* r3 > 0 Restore r4-r7 */
- ldmltfd sp!, {r4-r9} /* r3 < 0 Restore r4-r9 */
+ ldmfdgt sp!, {r4-r7} /* r3 > 0 Restore r4-r7 */
+ ldmfdlt sp!, {r4-r9} /* r3 < 0 Restore r4-r9 */
ldmfd sp!, {r10-r11, pc}
.Lcopyout_guts:
@@ -582,7 +583,7 @@ ENTRY(copyout)
tst r0, #0x07 /* Already quad aligned? */
ldrne ip, [r0], #0x04
subne r2, r2, #0x04
- strnet ip, [r1], #0x04
+ strtne ip, [r1], #0x04
stmfd sp!, {r4-r9} /* Free up some registers */
mov r3, #-1 /* Signal restore r4-r9 */
@@ -650,7 +651,7 @@ ENTRY(copyout)
.Lcopyout_w_lessthan128:
adds r2, r2, #0x80 /* Adjust for extra sub */
- ldmeqfd sp!, {r4-r9}
+ ldmfdeq sp!, {r4-r9}
RETeq /* Return now if done */
subs r2, r2, #0x20
blt .Lcopyout_w_lessthan32
@@ -675,7 +676,7 @@ ENTRY(copyout)
.Lcopyout_w_lessthan32:
adds r2, r2, #0x20 /* Adjust for extra sub */
- ldmeqfd sp!, {r4-r9}
+ ldmfdeq sp!, {r4-r9}
RETeq /* Return now if done */
and r4, r2, #0x18
@@ -710,16 +711,16 @@ ENTRY(copyout)
.Lcopyout_w_less_than8:
subs r2, r2, #0x04
ldrge ip, [r0], #0x04
- strget ip, [r1], #0x04
+ strtge ip, [r1], #0x04
RETeq /* Return now if done */
addlt r2, r2, #0x04
ldrb ip, [r0], #0x01
cmp r2, #0x02
- ldrgeb r2, [r0], #0x01
+ ldrbge r2, [r0], #0x01
strbt ip, [r1], #0x01
- ldrgtb ip, [r0]
- strgebt r2, [r1], #0x01
- strgtbt ip, [r1]
+ ldrbgt ip, [r0]
+ strbtge r2, [r1], #0x01
+ strbtgt ip, [r1]
RET
/*
@@ -774,7 +775,7 @@ ENTRY(copyout)
bge .Lcopyout_bad1_loop16
adds r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
+ ldmfdeq sp!, {r4-r7}
RETeq /* Return now if done */
subs r2, r2, #0x04
sublt r0, r0, #0x03
@@ -835,7 +836,7 @@ ENTRY(copyout)
bge .Lcopyout_bad2_loop16
adds r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
+ ldmfdeq sp!, {r4-r7}
RETeq /* Return now if done */
subs r2, r2, #0x04
sublt r0, r0, #0x02
@@ -896,7 +897,7 @@ ENTRY(copyout)
bge .Lcopyout_bad3_loop16
adds r2, r2, #0x10
- ldmeqfd sp!, {r4-r7}
+ ldmfdeq sp!, {r4-r7}
RETeq /* Return now if done */
subs r2, r2, #0x04
sublt r0, r0, #0x01
Modified: stable/10/sys/arm/arm/blockio.S
==============================================================================
--- stable/10/sys/arm/arm/blockio.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/sys/arm/arm/blockio.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -50,6 +50,8 @@
__FBSDID("$FreeBSD$");
+ .syntax unified
+
/*
* Read bytes from an I/O address into a block of memory
*
@@ -71,10 +73,10 @@ ENTRY(read_multi_1)
cmp r12, #2
ldrb r3, [r0]
strb r3, [r1], #1
- ldrgeb r3, [r0]
- strgeb r3, [r1], #1
- ldrgtb r3, [r0]
- strgtb r3, [r1], #1
+ ldrbge r3, [r0]
+ strbge r3, [r1], #1
+ ldrbgt r3, [r0]
+ strbgt r3, [r1], #1
subs r2, r2, r12
blt .Lrm1_l4
.Lrm1_main:
@@ -91,15 +93,15 @@ ENTRY(read_multi_1)
bge .Lrm1loop
.Lrm1_l4:
adds r2, r2, #4 /* r2 = length again */
- ldmeqdb fp, {fp, sp, pc}
+ ldmdbeq fp, {fp, sp, pc}
RETeq
cmp r2, #2
ldrb r3, [r0]
strb r3, [r1], #1
- ldrgeb r3, [r0]
- strgeb r3, [r1], #1
- ldrgtb r3, [r0]
- strgtb r3, [r1], #1
+ ldrbge r3, [r0]
+ strbge r3, [r1], #1
+ ldrbgt r3, [r0]
+ strbgt r3, [r1], #1
ldmdb fp, {fp, sp, pc}
END(read_multi_1)
@@ -124,10 +126,10 @@ ENTRY(write_multi_1)
cmp r12, #2
ldrb r3, [r1], #1
strb r3, [r0]
- ldrgeb r3, [r1], #1
- strgeb r3, [r0]
- ldrgtb r3, [r1], #1
- strgtb r3, [r0]
+ ldrbge r3, [r1], #1
+ strbge r3, [r0]
+ ldrbgt r3, [r1], #1
+ strbgt r3, [r0]
subs r2, r2, r12
blt .Lwm1_l4
.Lwm1_main:
@@ -144,14 +146,14 @@ ENTRY(write_multi_1)
bge .Lwm1loop
.Lwm1_l4:
adds r2, r2, #4 /* r2 = length again */
- ldmeqdb fp, {fp, sp, pc}
+ ldmdbeq fp, {fp, sp, pc}
cmp r2, #2
ldrb r3, [r1], #1
strb r3, [r0]
- ldrgeb r3, [r1], #1
- strgeb r3, [r0]
- ldrgtb r3, [r1], #1
- strgtb r3, [r0]
+ ldrbge r3, [r1], #1
+ strbge r3, [r0]
+ ldrbgt r3, [r1], #1
+ strbgt r3, [r0]
ldmdb fp, {fp, sp, pc}
END(write_multi_1)
Modified: stable/10/sys/arm/arm/cpufunc_asm_arm11x6.S
==============================================================================
--- stable/10/sys/arm/arm/cpufunc_asm_arm11x6.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/sys/arm/arm/cpufunc_asm_arm11x6.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -62,7 +62,7 @@
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
- .cpu arm1136js
+ .cpu arm1176jz-s
#if 0
#define Invalidate_I_cache(Rtmp1, Rtmp2) \
Modified: stable/10/sys/arm/arm/cpufunc_asm_armv5.S
==============================================================================
--- stable/10/sys/arm/arm/cpufunc_asm_armv5.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/sys/arm/arm/cpufunc_asm_armv5.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -194,7 +194,6 @@ ENTRY(armv5_idcache_wbinv_range)
END(armv5_idcache_wbinv_range)
ENTRY_NP(armv5_idcache_wbinv_all)
-armv5_idcache_wbinv_all:
.Larmv5_idcache_wbinv_all:
/*
* We assume that the code here can never be out of sync with the
Modified: stable/10/sys/arm/arm/cpufunc_asm_xscale_c3.S
==============================================================================
--- stable/10/sys/arm/arm/cpufunc_asm_xscale_c3.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/sys/arm/arm/cpufunc_asm_xscale_c3.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -143,7 +143,6 @@ __FBSDID("$FreeBSD$");
ENTRY_NP(xscalec3_cache_syncI)
-xscalec3_cache_purgeID:
EENTRY_NP(xscalec3_cache_purgeID)
mcr p15, 0, r0, c7, c5, 0 /* flush I cache (D cleaned below) */
EENTRY_NP(xscalec3_cache_cleanID)
Modified: stable/10/sys/arm/arm/fusu.S
==============================================================================
--- stable/10/sys/arm/arm/fusu.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/sys/arm/arm/fusu.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -38,6 +38,8 @@
#include "assym.s"
__FBSDID("$FreeBSD$");
+ .syntax unified
+
#ifdef _ARM_ARCH_6
#define GET_PCB(tmp) \
mrc p15, 0, tmp, c13, c0, 4; \
@@ -83,7 +85,7 @@ EENTRY_NP(casuword32)
ldrt r5, [r0]
cmp r5, r1
movne r0, r5
- streqt r2, [r0]
+ strteq r2, [r0]
#endif
moveq r0, r1
2:
@@ -129,7 +131,7 @@ EENTRY_NP(fuword32)
str r1, [r2, #PCB_ONFAULT]
mov r0, r3
RET
-END(fuword32)
+EEND(fuword32)
END(fuword)
/*
@@ -269,7 +271,7 @@ _C_LABEL(fusubailout):
fusupcbfaulttext:
.asciz "Yikes - no valid PCB during fusuxxx() addr=%08x\n"
- .align 0
+ .align 2
#endif
/*
@@ -295,7 +297,7 @@ EENTRY_NP(suword32)
mov r0, #0x00000000
str r0, [r2, #PCB_ONFAULT]
RET
-END(suword32)
+EEND(suword32)
END(suword)
/*
Modified: stable/10/sys/arm/arm/in_cksum_arm.S
==============================================================================
--- stable/10/sys/arm/arm/in_cksum_arm.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/sys/arm/arm/in_cksum_arm.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -46,6 +46,7 @@
#include "assym.s"
__FBSDID("$FreeBSD$");
+ .syntax unified
/*
* int in_cksum(struct mbuf *m, int len)
*
@@ -128,9 +129,9 @@ ASENTRY_NP(L_cksumdata)
blt .Lcksumdata_endgame
cmp r7, #0x02
ldrb r4, [r0], #0x01 /* Fetch 1st byte */
- ldrgeb r5, [r0], #0x01 /* Fetch 2nd byte */
+ ldrbge r5, [r0], #0x01 /* Fetch 2nd byte */
movlt r5, #0x00
- ldrgtb r6, [r0], #0x01 /* Fetch 3rd byte */
+ ldrbgt r6, [r0], #0x01 /* Fetch 3rd byte */
movle r6, #0x00
/* Combine the three bytes depending on endianness and alignment */
#ifdef __ARMEB__
@@ -196,7 +197,7 @@ ASENTRY_NP(L_cksumdata)
adcs r2, r2, r5
adc r2, r2, #0x00
subs r1, r1, #0x40
- ldrged r4, [r0], #0x08
+ ldrdge r4, [r0], #0x08
bge .Lcksumdata_bigloop
adds r2, r2, r6 /* r6/r7 still need summing */
@@ -241,7 +242,7 @@ ASENTRY_NP(L_cksumdata)
cmp r1, #0x20
#ifdef _ARM_ARCH_5E
- ldrged r4, [r0], #0x08 /* Avoid stalling pld and result */
+ ldrdge r4, [r0], #0x08 /* Avoid stalling pld and result */
blt .Lcksumdata_less_than_32
pld [r0, #0x18]
ldrd r6, [r0], #0x08
@@ -319,9 +320,9 @@ ASENTRY_NP(L_cksumdata)
.Lcksumdata_endgame:
ldrb r3, [r0] /* Fetch first byte */
cmp r1, #0x02
- ldrgeb r4, [r0, #0x01] /* Fetch 2nd and 3rd as necessary */
+ ldrbge r4, [r0, #0x01] /* Fetch 2nd and 3rd as necessary */
movlt r4, #0x00
- ldrgtb r5, [r0, #0x02]
+ ldrbgt r5, [r0, #0x02]
movle r5, #0x00
/* Combine the three bytes depending on endianness and alignment */
tst r0, #0x01
Modified: stable/10/sys/arm/arm/locore.S
==============================================================================
--- stable/10/sys/arm/arm/locore.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/sys/arm/arm/locore.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -474,8 +474,8 @@ ENTRY_NP(cpu_halt)
* Hurl ourselves into the ROM
*/
mov r0, #(CPU_CONTROL_32BP_ENABLE | CPU_CONTROL_32BD_ENABLE)
- mcr 15, 0, r0, c1, c0, 0
- mcrne 15, 0, r2, c8, c7, 0 /* nail I+D TLB on ARMv4 and greater */
+ mcr p15, 0, r0, c1, c0, 0
+ mcrne p15, 0, r2, c8, c7, 0 /* nail I+D TLB on ARMv4 and greater */
mov pc, r4
/*
Modified: stable/10/sys/arm/arm/support.S
==============================================================================
--- stable/10/sys/arm/arm/support.S Sun Dec 14 16:26:19 2014 (r275766)
+++ stable/10/sys/arm/arm/support.S Sun Dec 14 16:28:53 2014 (r275767)
@@ -91,6 +91,8 @@ __FBSDID("$FreeBSD$");
#include "assym.s"
+ .syntax unified
+
.L_arm_memcpy:
.word _C_LABEL(_arm_memcpy)
.L_arm_bzero:
@@ -130,7 +132,7 @@ ENTRY(bzero)
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-stable-10
mailing list