summaryrefslogtreecommitdiffstats
path: root/src/arch/x86/include/bits
diff options
context:
space:
mode:
authorMichael Brown2012-11-05 01:58:20 +0100
committerMichael Brown2012-11-12 17:58:49 +0100
commit53f3deee06366dacd38974af7beb89aa7ce6c45e (patch)
treee91e14fffd8eb7b9a379fc5207c7cd9bd3a87c0d /src/arch/x86/include/bits
parent[libc] Reduce overall code size by externalising strlen() (diff)
downloadipxe-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')
-rw-r--r--src/arch/x86/include/bits/string.h17
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