Home | History | Annotate | only in /src/lib/libc/arch/arm/string
History log of /src/lib/libc/arch/arm/string
RevisionDateAuthorComments
 1.9 21-Aug-2013  matt Add -marm to those sources who aren't thumb friendly.
 1.8 30-Jul-2009  dsl branches: 1.8.6; 1.8.12;
If SRCS contains any .S files then remove the corresponding .c file from
SRCS and add to LSRCS (for lint).
Change the 'string' Makefiles so that the arch/*/string/Makefile.inc
need only specify the .S files for that architecture and not the .c
files for all the files they don't override.
 1.7 18-Jul-2009  dsl Remove references to index.c and rindex.c (strchr.c and strrchr.c
now provide the definitions).
 1.6 14-Oct-2003  scw Xscale-optimised mem* routines. Contributed by Wasabi Systems.
(Note: memcmp/memset improvements also benefit non-Xscale).

memcmp() - Compare 32-bits at a time if possible. Special-case 6-byte
comparisons, for the benefit of the network stack.

memset() - More loop unrolling, plus use of 'strd' instruction,
bzero() results in > 100% speedup on Xscale.

memcpy() - Big-endian support, unrolled loops, 'strd/pld', plus special-
cases for very common length/alignment combinations.
Benchmarks show ~50% improvment on Xscale.

memmove() - Big-endian support. Use fast memcpy(), above, if the regions
bcopy() don't overlap. Otherwise unchanged

XXX: The Xscale optimisations are not enabled by default, unless /etc/mk.conf
XXX: has the right compiler options. The intention is to pull them in via
XXX: something like libxscale.so, selected at runtime by ld.so.conf.
XXX: (Big-endian support is not affected by this).
 1.5 23-Nov-2002  chris Add arm asm version of memcmp, basically it's strncmp.S without the
check for *src != 0
 1.4 23-Nov-2002  chris Add an asm version of strncmp, based on strcmp.
Add RCSID to strcmp, also use numeric label, rather than named label for
loop.
 1.3 16-Nov-2002  rearnsha Add an assembler version of strcmp, based on example code from the ARM
ARM. As an example of the performance difference that this provides
a Dhrystone score on my Shark goes from 213k to 261k.
 1.2 11-Nov-2001  chris Update the libc version of ffs to make use of an optimsed asm version.
 1.1 29-Dec-2000  bjh21 branches: 1.1.2;
Create shared ARM source for libc, and move arm26 port over to using it.
The code is (almost) a direct copy of the current arm26 sources.
It's identical to the current arm32 sources, with the following exceptions:
- _C_LABEL is used on references to C labels from assembler.
- Function returns in assembler have APCS-26 versions in #ifdef __APCS_26__.
- It uses SoftFloat 2a rather than SoftFloat 1a.

The first two of these should be inconsequential. I believe that SoftFloat 2a
should work on arm32 and be backward-compatible with existing code, but this
is not obviously true. For now, arm32 remains using its own bits of libc.
 1.1.2.2 10-Dec-2002  thorpej Sync with HEAD.
 1.1.2.1 14-Nov-2001  nathanw Catch up to -current.
 1.8.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.8.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7 14-Oct-2003  scw Xscale-optimised mem* routines. Contributed by Wasabi Systems.
(Note: memcmp/memset improvements also benefit non-Xscale).

memcmp() - Compare 32-bits at a time if possible. Special-case 6-byte
comparisons, for the benefit of the network stack.

memset() - More loop unrolling, plus use of 'strd' instruction,
bzero() results in > 100% speedup on Xscale.

memcpy() - Big-endian support, unrolled loops, 'strd/pld', plus special-
cases for very common length/alignment combinations.
Benchmarks show ~50% improvment on Xscale.

memmove() - Big-endian support. Use fast memcpy(), above, if the regions
bcopy() don't overlap. Otherwise unchanged

XXX: The Xscale optimisations are not enabled by default, unless /etc/mk.conf
XXX: has the right compiler options. The intention is to pull them in via
XXX: something like libxscale.so, selected at runtime by ld.so.conf.
XXX: (Big-endian support is not affected by this).
 1.6 09-Oct-2003  ichiro dont use __ARMEB__
It changed so that it might distinguish by BYTE_ORDER
 1.5 09-Oct-2003  ichiro support big endian
 1.4 05-Apr-2003  bjh21 NetBSD/acorn26 has been using APCS-32 for years, so unifdef -U__APCS_26__.
 1.3 17-Aug-2002  thorpej Local label fixup.
 1.2 23-Jan-2001  bjh21 branches: 1.2.2;
Correct licence to current TNF one.
 1.1 29-Dec-2000  bjh21 Create shared ARM source for libc, and move arm26 port over to using it.
The code is (almost) a direct copy of the current arm26 sources.
It's identical to the current arm32 sources, with the following exceptions:
- _C_LABEL is used on references to C labels from assembler.
- Function returns in assembler have APCS-26 versions in #ifdef __APCS_26__.
- It uses SoftFloat 2a rather than SoftFloat 1a.

The first two of these should be inconsequential. I believe that SoftFloat 2a
should work on arm32 and be backward-compatible with existing code, but this
is not obviously true. For now, arm32 remains using its own bits of libc.
 1.2.2.1 27-Aug-2002  nathanw Catch up to -current.
 1.3 14-Oct-2003  scw Xscale-optimised mem* routines. Contributed by Wasabi Systems.
(Note: memcmp/memset improvements also benefit non-Xscale).

memcmp() - Compare 32-bits at a time if possible. Special-case 6-byte
comparisons, for the benefit of the network stack.

memset() - More loop unrolling, plus use of 'strd' instruction,
bzero() results in > 100% speedup on Xscale.

memcpy() - Big-endian support, unrolled loops, 'strd/pld', plus special-
cases for very common length/alignment combinations.
Benchmarks show ~50% improvment on Xscale.

memmove() - Big-endian support. Use fast memcpy(), above, if the regions
bcopy() don't overlap. Otherwise unchanged

XXX: The Xscale optimisations are not enabled by default, unless /etc/mk.conf
XXX: has the right compiler options. The intention is to pull them in via
XXX: something like libxscale.so, selected at runtime by ld.so.conf.
XXX: (Big-endian support is not affected by this).
 1.2 16-Jul-2001  matt Changes needed for ARM ELF shared library support.
 1.1 29-Dec-2000  bjh21 branches: 1.1.2;
Create shared ARM source for libc, and move arm26 port over to using it.
The code is (almost) a direct copy of the current arm26 sources.
It's identical to the current arm32 sources, with the following exceptions:
- _C_LABEL is used on references to C labels from assembler.
- Function returns in assembler have APCS-26 versions in #ifdef __APCS_26__.
- It uses SoftFloat 2a rather than SoftFloat 1a.

The first two of these should be inconsequential. I believe that SoftFloat 2a
should work on arm32 and be backward-compatible with existing code, but this
is not obviously true. For now, arm32 remains using its own bits of libc.
 1.1.2.1 08-Oct-2001  nathanw Catch up to -current.
 1.4 28-Apr-2008  martin branches: 1.4.8;
Remove clause 3 and 4 from TNF licenses
 1.3 14-Oct-2003  scw branches: 1.3.22; 1.3.30;
Xscale-optimised mem* routines. Contributed by Wasabi Systems.
(Note: memcmp/memset improvements also benefit non-Xscale).

memcmp() - Compare 32-bits at a time if possible. Special-case 6-byte
comparisons, for the benefit of the network stack.

memset() - More loop unrolling, plus use of 'strd' instruction,
bzero() results in > 100% speedup on Xscale.

memcpy() - Big-endian support, unrolled loops, 'strd/pld', plus special-
cases for very common length/alignment combinations.
Benchmarks show ~50% improvment on Xscale.

memmove() - Big-endian support. Use fast memcpy(), above, if the regions
bcopy() don't overlap. Otherwise unchanged

XXX: The Xscale optimisations are not enabled by default, unless /etc/mk.conf
XXX: has the right compiler options. The intention is to pull them in via
XXX: something like libxscale.so, selected at runtime by ld.so.conf.
XXX: (Big-endian support is not affected by this).
 1.2 16-Jul-2001  matt Changes needed for ARM ELF shared library support.
 1.1 29-Dec-2000  bjh21 branches: 1.1.2;
Create shared ARM source for libc, and move arm26 port over to using it.
The code is (almost) a direct copy of the current arm26 sources.
It's identical to the current arm32 sources, with the following exceptions:
- _C_LABEL is used on references to C labels from assembler.
- Function returns in assembler have APCS-26 versions in #ifdef __APCS_26__.
- It uses SoftFloat 2a rather than SoftFloat 1a.

The first two of these should be inconsequential. I believe that SoftFloat 2a
should work on arm32 and be backward-compatible with existing code, but this
is not obviously true. For now, arm32 remains using its own bits of libc.
 1.1.2.1 08-Oct-2001  nathanw Catch up to -current.
 1.3.30.1 18-May-2008  yamt sync with head.
 1.3.22.1 28-Aug-2007  matt More thumb support
 1.4.8.2 28-Apr-2008  martin Remove clause 3 and 4 from TNF licenses
 1.4.8.1 28-Apr-2008  martin file bzero.S was added on branch christos-time_t on 2008-04-28 20:22:56 +0000
 1.9 20-Dec-2005  christos Use reach-over sources from common/lib/libc
 1.8 06-May-2005  rearnsha On ARMv5 reduce the value to the LSB before using CLZ. Otherwise we'll
calculate the position of the MSB not the LSB.
 1.7 21-Aug-2004  rearnsha branches: 1.7.2;
Add missing new line.
 1.6 21-Aug-2004  rearnsha Use RET to return.

If ARMv5 or later then use CLZ rather than long-winded tale-lookup.
 1.5 05-Apr-2003  bjh21 NetBSD/acorn26 has been using APCS-32 for years, so unifdef -U__APCS_26__.
 1.4 17-Aug-2002  thorpej Local label fixup.
 1.3 17-Aug-2002  chris correct comment, it's r0, not a0.
 1.2 13-Nov-2001  bjh21 branches: 1.2.2;
Fix .type directive to use the right name for L_ffs_table (pointed out by
Ian Fry).

Also, add RCSID and fix some comments.
 1.1 11-Nov-2001  chris Update the libc version of ffs to make use of an optimsed asm version.
 1.2.2.3 27-Aug-2002  nathanw Catch up to -current.
 1.2.2.2 14-Nov-2001  nathanw Catch up to -current.
 1.2.2.1 13-Nov-2001  nathanw file ffs.S was added on branch nathanw_sa on 2001-11-14 19:31:52 +0000
 1.7.2.1 07-May-2005  tron Pull up revision 1.8 (requested by rearnsha in ticket #255):
On ARMv5 reduce the value to the LSB before using CLZ. Otherwise we'll
calculate the position of the MSB not the LSB.
 1.6 20-Dec-2005  christos Use reach-over sources from common/lib/libc
 1.5 21-Aug-2004  rearnsha Use RET and RETc for returning.
 1.4 23-Oct-2003  scw Duh, fix the align-to-32-bits code.
 1.3 14-Oct-2003  scw Xscale-optimised mem* routines. Contributed by Wasabi Systems.
(Note: memcmp/memset improvements also benefit non-Xscale).

memcmp() - Compare 32-bits at a time if possible. Special-case 6-byte
comparisons, for the benefit of the network stack.

memset() - More loop unrolling, plus use of 'strd' instruction,
bzero() results in > 100% speedup on Xscale.

memcpy() - Big-endian support, unrolled loops, 'strd/pld', plus special-
cases for very common length/alignment combinations.
Benchmarks show ~50% improvment on Xscale.

memmove() - Big-endian support. Use fast memcpy(), above, if the regions
bcopy() don't overlap. Otherwise unchanged

XXX: The Xscale optimisations are not enabled by default, unless /etc/mk.conf
XXX: has the right compiler options. The intention is to pull them in via
XXX: something like libxscale.so, selected at runtime by ld.so.conf.
XXX: (Big-endian support is not affected by this).
 1.2 05-Apr-2003  bjh21 NetBSD/acorn26 has been using APCS-32 for years, so unifdef -U__APCS_26__.
 1.1 23-Nov-2002  chris branches: 1.1.2;
Add arm asm version of memcmp, basically it's strncmp.S without the
check for *src != 0
 1.1.2.2 10-Dec-2002  thorpej Sync with HEAD.
 1.1.2.1 23-Nov-2002  thorpej file memcmp.S was added on branch nathanw_sa on 2002-12-10 06:25:43 +0000
 1.5 20-Dec-2005  christos Use reach-over sources from common/lib/libc
 1.4 14-Oct-2003  scw Xscale-optimised mem* routines. Contributed by Wasabi Systems.
(Note: memcmp/memset improvements also benefit non-Xscale).

memcmp() - Compare 32-bits at a time if possible. Special-case 6-byte
comparisons, for the benefit of the network stack.

memset() - More loop unrolling, plus use of 'strd' instruction,
bzero() results in > 100% speedup on Xscale.

memcpy() - Big-endian support, unrolled loops, 'strd/pld', plus special-
cases for very common length/alignment combinations.
Benchmarks show ~50% improvment on Xscale.

memmove() - Big-endian support. Use fast memcpy(), above, if the regions
bcopy() don't overlap. Otherwise unchanged

XXX: The Xscale optimisations are not enabled by default, unless /etc/mk.conf
XXX: has the right compiler options. The intention is to pull them in via
XXX: something like libxscale.so, selected at runtime by ld.so.conf.
XXX: (Big-endian support is not affected by this).
 1.3 05-Apr-2003  bjh21 NetBSD/acorn26 has been using APCS-32 for years, so unifdef -U__APCS_26__.
 1.2 16-Jul-2001  matt Changes needed for ARM ELF shared library support.
 1.1 29-Dec-2000  bjh21 branches: 1.1.2;
Create shared ARM source for libc, and move arm26 port over to using it.
The code is (almost) a direct copy of the current arm26 sources.
It's identical to the current arm32 sources, with the following exceptions:
- _C_LABEL is used on references to C labels from assembler.
- Function returns in assembler have APCS-26 versions in #ifdef __APCS_26__.
- It uses SoftFloat 2a rather than SoftFloat 1a.

The first two of these should be inconsequential. I believe that SoftFloat 2a
should work on arm32 and be backward-compatible with existing code, but this
is not obviously true. For now, arm32 remains using its own bits of libc.
 1.1.2.1 08-Oct-2001  nathanw Catch up to -current.
 1.3 20-Dec-2005  christos Use reach-over sources from common/lib/libc
 1.2 02-Jun-2005  scw Nuke trailing whitespace.
 1.1 14-Oct-2003  scw Xscale-optimised mem* routines. Contributed by Wasabi Systems.
(Note: memcmp/memset improvements also benefit non-Xscale).

memcmp() - Compare 32-bits at a time if possible. Special-case 6-byte
comparisons, for the benefit of the network stack.

memset() - More loop unrolling, plus use of 'strd' instruction,
bzero() results in > 100% speedup on Xscale.

memcpy() - Big-endian support, unrolled loops, 'strd/pld', plus special-
cases for very common length/alignment combinations.
Benchmarks show ~50% improvment on Xscale.

memmove() - Big-endian support. Use fast memcpy(), above, if the regions
bcopy() don't overlap. Otherwise unchanged

XXX: The Xscale optimisations are not enabled by default, unless /etc/mk.conf
XXX: has the right compiler options. The intention is to pull them in via
XXX: something like libxscale.so, selected at runtime by ld.so.conf.
XXX: (Big-endian support is not affected by this).
 1.4 20-Dec-2005  christos Use reach-over sources from common/lib/libc
 1.3 02-Jun-2005  scw Nuke trailing whitespace.
 1.2 21-Aug-2004  rearnsha branches: 1.2.2;
Always use bx for returning (this code is always ARMv5TE.
 1.1 14-Oct-2003  scw Xscale-optimised mem* routines. Contributed by Wasabi Systems.
(Note: memcmp/memset improvements also benefit non-Xscale).

memcmp() - Compare 32-bits at a time if possible. Special-case 6-byte
comparisons, for the benefit of the network stack.

memset() - More loop unrolling, plus use of 'strd' instruction,
bzero() results in > 100% speedup on Xscale.

memcpy() - Big-endian support, unrolled loops, 'strd/pld', plus special-
cases for very common length/alignment combinations.
Benchmarks show ~50% improvment on Xscale.

memmove() - Big-endian support. Use fast memcpy(), above, if the regions
bcopy() don't overlap. Otherwise unchanged

XXX: The Xscale optimisations are not enabled by default, unless /etc/mk.conf
XXX: has the right compiler options. The intention is to pull them in via
XXX: something like libxscale.so, selected at runtime by ld.so.conf.
XXX: (Big-endian support is not affected by this).
 1.2.2.1 26-Aug-2007  bouyer Apply patch, requested by scw in ticket #1806:
lib/libc/arch/arm/string/memcpy_xscale.S: patch
sys/lib/libkern/arch/arm/memcpy_xscale.S: patch
Apply the patch, with some minor tweaks, supplied in PR/36513.
This prevents a possible prefetch past the end of the source buffer.
 1.7 20-Dec-2005  christos Use reach-over sources from common/lib/libc
 1.6 02-Jun-2005  scw Nuke trailing whitespace.
 1.5 21-Aug-2004  rearnsha branches: 1.5.2;
Use RET and RETc for returning.
 1.4 14-Oct-2003  scw Xscale-optimised mem* routines. Contributed by Wasabi Systems.
(Note: memcmp/memset improvements also benefit non-Xscale).

memcmp() - Compare 32-bits at a time if possible. Special-case 6-byte
comparisons, for the benefit of the network stack.

memset() - More loop unrolling, plus use of 'strd' instruction,
bzero() results in > 100% speedup on Xscale.

memcpy() - Big-endian support, unrolled loops, 'strd/pld', plus special-
cases for very common length/alignment combinations.
Benchmarks show ~50% improvment on Xscale.

memmove() - Big-endian support. Use fast memcpy(), above, if the regions
bcopy() don't overlap. Otherwise unchanged

XXX: The Xscale optimisations are not enabled by default, unless /etc/mk.conf
XXX: has the right compiler options. The intention is to pull them in via
XXX: something like libxscale.so, selected at runtime by ld.so.conf.
XXX: (Big-endian support is not affected by this).
 1.3 05-Apr-2003  bjh21 NetBSD/acorn26 has been using APCS-32 for years, so unifdef -U__APCS_26__.
 1.2 16-Jul-2001  matt Changes needed for ARM ELF shared library support.
 1.1 29-Dec-2000  bjh21 branches: 1.1.2;
Create shared ARM source for libc, and move arm26 port over to using it.
The code is (almost) a direct copy of the current arm26 sources.
It's identical to the current arm32 sources, with the following exceptions:
- _C_LABEL is used on references to C labels from assembler.
- Function returns in assembler have APCS-26 versions in #ifdef __APCS_26__.
- It uses SoftFloat 2a rather than SoftFloat 1a.

The first two of these should be inconsequential. I believe that SoftFloat 2a
should work on arm32 and be backward-compatible with existing code, but this
is not obviously true. For now, arm32 remains using its own bits of libc.
 1.1.2.1 08-Oct-2001  nathanw Catch up to -current.
 1.5.2.1 22-Jun-2007  liamjfoy Pull up following revision(s) (requested by scw in ticket #1805):
common/lib/libc/arch/arm/string/memmove.S: revision 1.2
Apply the patch supplied in PR/36512 to fix the buffer overlap check. The patch
to memmove.S was provided via patch.
 1.6 20-Dec-2005  christos Use reach-over sources from common/lib/libc
 1.5 21-Aug-2004  rearnsha Use RET and RETc for returning.
 1.4 14-Oct-2003  scw Xscale-optimised mem* routines. Contributed by Wasabi Systems.
(Note: memcmp/memset improvements also benefit non-Xscale).

memcmp() - Compare 32-bits at a time if possible. Special-case 6-byte
comparisons, for the benefit of the network stack.

memset() - More loop unrolling, plus use of 'strd' instruction,
bzero() results in > 100% speedup on Xscale.

memcpy() - Big-endian support, unrolled loops, 'strd/pld', plus special-
cases for very common length/alignment combinations.
Benchmarks show ~50% improvment on Xscale.

memmove() - Big-endian support. Use fast memcpy(), above, if the regions
bcopy() don't overlap. Otherwise unchanged

XXX: The Xscale optimisations are not enabled by default, unless /etc/mk.conf
XXX: has the right compiler options. The intention is to pull them in via
XXX: something like libxscale.so, selected at runtime by ld.so.conf.
XXX: (Big-endian support is not affected by this).
 1.3 05-Apr-2003  bjh21 NetBSD/acorn26 has been using APCS-32 for years, so unifdef -U__APCS_26__.
 1.2 17-Aug-2002  thorpej Local label fixup.
 1.1 29-Dec-2000  bjh21 branches: 1.1.2;
Create shared ARM source for libc, and move arm26 port over to using it.
The code is (almost) a direct copy of the current arm26 sources.
It's identical to the current arm32 sources, with the following exceptions:
- _C_LABEL is used on references to C labels from assembler.
- Function returns in assembler have APCS-26 versions in #ifdef __APCS_26__.
- It uses SoftFloat 2a rather than SoftFloat 1a.

The first two of these should be inconsequential. I believe that SoftFloat 2a
should work on arm32 and be backward-compatible with existing code, but this
is not obviously true. For now, arm32 remains using its own bits of libc.
 1.1.2.1 27-Aug-2002  nathanw Catch up to -current.
 1.5 20-Dec-2005  christos Use reach-over sources from common/lib/libc
 1.4 21-Aug-2004  rearnsha Use RET and RETc for returning.
 1.3 05-Apr-2003  bjh21 NetBSD/acorn26 has been using APCS-32 for years, so unifdef -U__APCS_26__.
 1.2 23-Nov-2002  chris branches: 1.2.2;
Add an asm version of strncmp, based on strcmp.
Add RCSID to strcmp, also use numeric label, rather than named label for
loop.
 1.1 16-Nov-2002  rearnsha Add an assembler version of strcmp, based on example code from the ARM
ARM. As an example of the performance difference that this provides
a Dhrystone score on my Shark goes from 213k to 261k.
 1.2.2.2 10-Dec-2002  thorpej Sync with HEAD.
 1.2.2.1 23-Nov-2002  thorpej file strcmp.S was added on branch nathanw_sa on 2002-12-10 06:25:43 +0000
 1.1 23-Jan-2013  matt branches: 1.1.2; 1.1.6; 1.1.12;
Add simple version of strncat for ARM.
 1.1.12.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.12.1 23-Jan-2013  yamt file strncat_naive.S was added on branch yamt-pagecache on 2014-05-22 11:36:46 +0000
 1.1.6.2 25-Feb-2013  tls resync with head
 1.1.6.1 23-Jan-2013  tls file strncat_naive.S was added on branch tls-maxphys on 2013-02-25 00:27:49 +0000
 1.1.2.2 07-Feb-2013  matt Sync with HEAD
 1.1.2.1 23-Jan-2013  matt file strncat_naive.S was added on branch matt-nb6-plus on 2013-02-07 07:06:28 +0000
 1.4 20-Dec-2005  christos Use reach-over sources from common/lib/libc
 1.3 21-Aug-2004  rearnsha Use RET and RETc for returning.
 1.2 05-Apr-2003  bjh21 NetBSD/acorn26 has been using APCS-32 for years, so unifdef -U__APCS_26__.
 1.1 23-Nov-2002  chris branches: 1.1.2;
Add an asm version of strncmp, based on strcmp.
Add RCSID to strcmp, also use numeric label, rather than named label for
loop.
 1.1.2.2 10-Dec-2002  thorpej Sync with HEAD.
 1.1.2.1 23-Nov-2002  thorpej file strncmp.S was added on branch nathanw_sa on 2002-12-10 06:25:43 +0000

RSS XML Feed