|
@@ -0,0 +1,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)
|