diff options
| author | Michael Brown | 2012-11-05 01:58:20 +0100 |
|---|---|---|
| committer | Michael Brown | 2012-11-12 17:58:49 +0100 |
| commit | 53f3deee06366dacd38974af7beb89aa7ce6c45e (patch) | |
| tree | e91e14fffd8eb7b9a379fc5207c7cd9bd3a87c0d /src/arch/x86/include/bits/string.h | |
| parent | [libc] Reduce overall code size by externalising strlen() (diff) | |
| download | ipxe-53f3deee06366dacd38974af7beb89aa7ce6c45e.tar.gz ipxe-53f3deee06366dacd38974af7beb89aa7ce6c45e.tar.xz ipxe-53f3deee06366dacd38974af7beb89aa7ce6c45e.zip | |
[libc] Fix and externalise memswap()
Make memswap() behave correctly if called with a length of zero.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/x86/include/bits/string.h')
| -rw-r--r-- | src/arch/x86/include/bits/string.h | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/src/arch/x86/include/bits/string.h b/src/arch/x86/include/bits/string.h index 249dd5438..4d44c722f 100644 --- a/src/arch/x86/include/bits/string.h +++ b/src/arch/x86/include/bits/string.h @@ -213,21 +213,8 @@ static inline void * memset ( void *dest, int fill, size_t len ) { } #define __HAVE_ARCH_MEMSWAP -static inline void * memswap(void *dest, void *src, size_t n) -{ -long d0, d1, d2, d3; -__asm__ __volatile__( - "\n1:\t" - "movb (%2),%%al\n\t" - "xchgb (%1),%%al\n\t" - "inc %1\n\t" - "stosb\n\t" - "loop 1b" - : "=&c" (d0), "=&S" (d1), "=&D" (d2), "=&a" (d3) - : "0" (n), "1" (src), "2" (dest) - : "memory" ); -return dest; -} + +extern void * memswap ( void *dest, void *src, size_t len ); #define __HAVE_ARCH_STRNCMP |
