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