blob: be0b142c35372ef07d274f5f13dc66ebf2384b60 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/*
* 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)
|