From: Michael Brown Date: Sun, 4 Nov 2012 22:58:42 +0000 (+0000) Subject: [libc] Remove unnecessary "cld" instruction from memset() X-Git-Tag: v1.20.1~1596 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f8ece72fc9b441c8a72635558a18bca98b211081;p=thirdparty%2Fipxe.git [libc] Remove unnecessary "cld" instruction from memset() Saving is one byte per call to memset(). Signed-off-by: Michael Brown --- diff --git a/src/arch/x86/include/bits/string.h b/src/arch/x86/include/bits/string.h index f0d3c9659..5736295ab 100644 --- a/src/arch/x86/include/bits/string.h +++ b/src/arch/x86/include/bits/string.h @@ -192,17 +192,24 @@ memmove ( void *dest, const void *src, size_t len ) { } #define __HAVE_ARCH_MEMSET -static inline void * memset(void *s, int c,size_t count) -{ -int d0, d1; -__asm__ __volatile__( - "cld\n\t" - "rep\n\t" - "stosb" - : "=&c" (d0), "=&D" (d1) - :"a" (c),"1" (s),"0" (count) - :"memory"); -return s; + +/** + * Fill memory region + * + * @v dest Destination address + * @v fill Fill pattern + * @v len Length + * @ret dest Destination address + */ +static inline void * memset ( void *dest, int fill, size_t len ) { + void *discard_D; + size_t discard_c; + + __asm__ __volatile__ ( "rep stosb" + : "=&D" ( discard_D ), "=&c" ( discard_c ) + : "0" ( dest ), "1" ( len ), "a" ( fill ) + : "memory" ); + return dest; } #define __HAVE_ARCH_MEMSWAP