/* | |
* Adapted from strlen.c code | |
* | |
* Copyright (C) 2008 Denys Vlasenko <vda.linux@googlemail.com> | |
* | |
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. | |
*/ | |
#include <string.h> | |
#undef rawmemchr | |
void *rawmemchr(const void *s, int c) | |
{ | |
void *eax; | |
int ecx, edi; | |
__asm__ __volatile__( | |
" repne; scasb\n" | |
" leal -1(%%edi), %%eax\n" | |
: "=&c" (ecx), "=&D" (edi), "=&a" (eax) | |
: "0" (0xffffffff), "1" (s), "2" (c) | |
); | |
return eax; | |
} | |
libc_hidden_def(rawmemchr) |