| /* | |
| * 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) |