Subject: CVS commit: src/sys/lib/libkern/arch/arm
To: None <source-changes@NetBSD.org>
From: Steve Woodford <scw@netbsd.org>
List: source-changes
Date: 10/13/2003 19:59:24
Module Name:	src
Committed By:	scw
Date:		Mon Oct 13 19:59:24 UTC 2003

Modified Files:
	src/sys/lib/libkern/arch/arm: memcmp.S memcpy.S memmove.S memset.S
Added Files:
	src/sys/lib/libkern/arch/arm: memcpy_arm.S memcpy_xscale.S

Log Message:
Xscale-optimised mem* functions, 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,
            results in > 100% speedup on Xscale.

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

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


To generate a diff of this commit:
cvs rdiff -r1.2 -r1.3 src/sys/lib/libkern/arch/arm/memcmp.S \
    src/sys/lib/libkern/arch/arm/memmove.S
cvs rdiff -r1.5 -r1.6 src/sys/lib/libkern/arch/arm/memcpy.S
cvs rdiff -r0 -r1.1 src/sys/lib/libkern/arch/arm/memcpy_arm.S \
    src/sys/lib/libkern/arch/arm/memcpy_xscale.S
cvs rdiff -r1.3 -r1.4 src/sys/lib/libkern/arch/arm/memset.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.