Home | History | Annotate | Download | only in string
History log of /src/lib/libc/arch/arm/string/bcopy.S
RevisionDateAuthorComments
 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.

RSS XML Feed