diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-05-24 11:52:25 +0100 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-05-24 11:52:25 +0100 |
commit | c05b1e9f6fc237160f48e1b324f7d90745b8adf1 (patch) | |
tree | 68b3752ce67c518df4c31adf656e3ddc71aa7d48 /xen/include/asm-x86/string.h | |
parent | e73effa056c01e832553273d9fd2634be341d6fa (diff) | |
download | xen-c05b1e9f6fc237160f48e1b324f7d90745b8adf1.tar.gz xen-c05b1e9f6fc237160f48e1b324f7d90745b8adf1.tar.bz2 xen-c05b1e9f6fc237160f48e1b324f7d90745b8adf1.zip |
Remove broken inline-asm string functions from Xen/x86. The
generic implementations in string.c are quite sufficient.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/include/asm-x86/string.h')
-rw-r--r-- | xen/include/asm-x86/string.h | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/xen/include/asm-x86/string.h b/xen/include/asm-x86/string.h index 6dee130fa7..0003d87425 100644 --- a/xen/include/asm-x86/string.h +++ b/xen/include/asm-x86/string.h @@ -3,152 +3,6 @@ #include <xen/config.h> -#define __HAVE_ARCH_STRCPY -static inline char *strcpy(char *dest, const char *src) -{ - long d0, d1, d2; - __asm__ __volatile__ ( - "1: lodsb \n" - " stosb \n" - " test %%al,%%al \n" - " jne 1b \n" - : "=&S" (d0), "=&D" (d1), "=&a" (d2) - : "0" (src), "1" (dest) : "memory" ); - return dest; -} - -#define __HAVE_ARCH_STRNCPY -static inline char *strncpy(char *dest, const char *src, size_t count) -{ - long d0, d1, d2, d3; - __asm__ __volatile__ ( - "1: dec %2 \n" - " js 2f \n" - " lodsb \n" - " stosb \n" - " test %%al,%%al \n" - " jne 1b \n" - " rep ; stosb \n" - "2: \n" - : "=&S" (d0), "=&D" (d1), "=&c" (d2), "=&a" (d3) - : "0" (src), "1" (dest), "2" (count) : "memory" ); - return dest; -} - -#define __HAVE_ARCH_STRCAT -static inline char *strcat(char *dest, const char *src) -{ - long d0, d1, d2, d3; - __asm__ __volatile__ ( - " repne ; scasb \n" - " dec %1 \n" - "1: lodsb \n" - " stosb \n" - " test %%al,%%al \n" - " jne 1b \n" - : "=&S" (d0), "=&D" (d1), "=&a" (d2), "=&c" (d3) - : "0" (src), "1" (dest), "2" (0UL), "3" (0xffffffffUL) : "memory" ); - return dest; -} - -#define __HAVE_ARCH_STRNCAT -static inline char *strncat(char *dest, const char *src, size_t count) -{ - long d0, d1, d2, d3; - __asm__ __volatile__ ( - " repne ; scasb \n" - " dec %1 \n" - " mov %8,%3 \n" - "1: dec %3 \n" - " js 2f \n" - " lodsb \n" - " stosb \n" - " test %%al,%%al \n" - " jne 1b \n" - "2: xor %%eax,%%eax\n" - " stosb" - : "=&S" (d0), "=&D" (d1), "=&a" (d2), "=&c" (d3) - : "0" (src), "1" (dest), "2" (0UL), "3" (0xffffffffUL), "g" (count) - : "memory" ); - return dest; -} - -#define __HAVE_ARCH_STRCMP -static inline int strcmp(const char *cs, const char *ct) -{ - long d0, d1; - register int __res; - __asm__ __volatile__ ( - "1: lodsb \n" - " scasb \n" - " jne 2f \n" - " test %%al,%%al \n" - " jne 1b \n" - " xor %%eax,%%eax\n" - " jmp 3f \n" - "2: sbb %%eax,%%eax\n" - " or $1,%%al \n" - "3: \n" - : "=a" (__res), "=&S" (d0), "=&D" (d1) - : "1" (cs), "2" (ct) ); - return __res; -} - -#define __HAVE_ARCH_STRNCMP -static inline int strncmp(const char *cs, const char *ct, size_t count) -{ - long d0, d1, d2; - register int __res; - __asm__ __volatile__ ( - "1: dec %3 \n" - " js 2f \n" - " lodsb \n" - " scasb \n" - " jne 3f \n" - " test %%al,%%al \n" - " jne 1b \n" - "2: xor %%eax,%%eax\n" - " jmp 4f \n" - "3: sbb %%eax,%%eax\n" - " or $1,%%al \n" - "4: \n" - : "=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2) - : "1" (cs), "2" (ct), "3" (count) ); - return __res; -} - -#define __HAVE_ARCH_STRCHR -static inline char *strchr(const char *s, int c) -{ - long d0; - register char *__res; - __asm__ __volatile__ ( - " mov %%al,%%ah \n" - "1: lodsb \n" - " cmp %%ah,%%al \n" - " je 2f \n" - " test %%al,%%al \n" - " jne 1b \n" - " mov $1,%1 \n" - "2: mov %1,%0 \n" - " dec %0 \n" - : "=a" (__res), "=&S" (d0) : "1" (s), "0" (c) ); - return __res; -} - -#define __HAVE_ARCH_STRLEN -static inline size_t strlen(const char *s) -{ - long d0; - register int __res; - __asm__ __volatile__ ( - " repne ; scasb \n" - " notl %0 \n" - " decl %0 \n" - : "=c" (__res), "=&D" (d0) : "1" (s), "a" (0), "0" (0xffffffffUL) ); - return __res; -} - static inline void *__variable_memcpy(void *to, const void *from, size_t n) { long d0, d1, d2; |