Update.
1999-10-03 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/i486/bits/string.h (__memrchr): New function. * sysdeps/i386/bits/string.h (__memrchr): Add cld to comply to conventions. * string/Versions: Export memrchr.
This commit is contained in:
parent
1d781d86c3
commit
22baad3c3d
@ -1,3 +1,12 @@
|
|||||||
|
1999-10-03 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* sysdeps/i386/i486/bits/string.h (__memrchr): New function.
|
||||||
|
|
||||||
|
* sysdeps/i386/bits/string.h (__memrchr): Add cld to comply to
|
||||||
|
conventions.
|
||||||
|
|
||||||
|
* string/Versions: Export memrchr.
|
||||||
|
|
||||||
1999-10-04 Roland McGrath <roland@baalperazim.frob.com>
|
1999-10-04 Roland McGrath <roland@baalperazim.frob.com>
|
||||||
|
|
||||||
* misc/Versions (GLIBC_2.2): Add getloadavg.
|
* misc/Versions (GLIBC_2.2): Add getloadavg.
|
||||||
|
@ -300,7 +300,8 @@ memchr (__const void *__s, int __c, size_t __n)
|
|||||||
"movl $1,%0\n"
|
"movl $1,%0\n"
|
||||||
"1:"
|
"1:"
|
||||||
: "=D" (__res), "=&c" (__d0)
|
: "=D" (__res), "=&c" (__d0)
|
||||||
: "a" (__c), "0" (__s), "1" (__n));
|
: "a" (__c), "0" (__s), "1" (__n)
|
||||||
|
: "cc");
|
||||||
return __res - 1;
|
return __res - 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -319,9 +320,10 @@ __memrchr (__const void *__s, int __c, size_t __n)
|
|||||||
"repne; scasb\n\t"
|
"repne; scasb\n\t"
|
||||||
"je 1f\n\t"
|
"je 1f\n\t"
|
||||||
"movl $1,%0\n"
|
"movl $1,%0\n"
|
||||||
"1:"
|
"1:\tcld"
|
||||||
: "=D" (__res), "=&c" (__d0)
|
: "=D" (__res), "=&c" (__d0)
|
||||||
: "a" (__c), "0" (__s), "1" (__n));
|
: "a" (__c), "0" (__s), "1" (__n)
|
||||||
|
: "cc");
|
||||||
return __res - 1;
|
return __res - 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -446,6 +446,42 @@ memchr (__const void *__s, int __c, size_t __n)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define _HAVE_STRING_ARCH_memrchr 1
|
||||||
|
#ifndef _FORCE_INLINES
|
||||||
|
__STRING_INLINE void *
|
||||||
|
__memrchr (__const void *__s, int __c, size_t __n)
|
||||||
|
{
|
||||||
|
register unsigned long int __d0;
|
||||||
|
#ifdef __i686__
|
||||||
|
register unsigned long int __d1;
|
||||||
|
#endif
|
||||||
|
register void *__res;
|
||||||
|
if (__n == 0)
|
||||||
|
return NULL;
|
||||||
|
#ifdef __i686__
|
||||||
|
__asm__ __volatile__
|
||||||
|
("std\n\t"
|
||||||
|
"repne; scasb\n\t"
|
||||||
|
"cmovne %2,%0\n\t"
|
||||||
|
"cld"
|
||||||
|
: "=D" (__res), "=&c" (__d0), "=&r" (__d1)
|
||||||
|
: "a" (__c), "0" (__s), "1" (__n), "2" (1)
|
||||||
|
: "cc");
|
||||||
|
#else
|
||||||
|
__asm__ __volatile__
|
||||||
|
("std\n\t"
|
||||||
|
"repne; scasb\n\t"
|
||||||
|
"je 1f\n\t"
|
||||||
|
"movl $1,%0\n"
|
||||||
|
"1:\tcld"
|
||||||
|
: "=D" (__res), "=&c" (__d0)
|
||||||
|
: "a" (__c), "0" (__s), "1" (__n)
|
||||||
|
: "cc");
|
||||||
|
#endif
|
||||||
|
return __res - 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Return pointer to C in S. */
|
/* Return pointer to C in S. */
|
||||||
#define _HAVE_STRING_ARCH_rawmemchr 1
|
#define _HAVE_STRING_ARCH_rawmemchr 1
|
||||||
__STRING_INLINE void *__rawmemchr (const void *__s, int __c);
|
__STRING_INLINE void *__rawmemchr (const void *__s, int __c);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user