Index: /trunk/src/kmk/config.h.darwin
===================================================================
--- /trunk/src/kmk/config.h.darwin	(revision 1812)
+++ /trunk/src/kmk/config.h.darwin	(revision 1813)
@@ -425,2 +425,5 @@
 /* Define as `fork' if `vfork' does not work. */
 /* #undef vfork */
+
+#include "inlined_memchr.h"
+
Index: /trunk/src/kmk/config.h.freebsd
===================================================================
--- /trunk/src/kmk/config.h.freebsd	(revision 1812)
+++ /trunk/src/kmk/config.h.freebsd	(revision 1813)
@@ -429,2 +429,5 @@
 /* Define as `fork' if `vfork' does not work. */
 /* #undef vfork */
+
+#include "inlined_memchr.h"
+
Index: /trunk/src/kmk/config.h.os2
===================================================================
--- /trunk/src/kmk/config.h.os2	(revision 1812)
+++ /trunk/src/kmk/config.h.os2	(revision 1813)
@@ -460,2 +460,4 @@
 #define LIBDIR "."
 
+#include "inlined_memchr.h"
+
Index: /trunk/src/kmk/config.h.solaris
===================================================================
--- /trunk/src/kmk/config.h.solaris	(revision 1812)
+++ /trunk/src/kmk/config.h.solaris	(revision 1813)
@@ -425,2 +425,5 @@
 /* Define as `fork' if `vfork' does not work. */
 /* #undef vfork */
+
+#include "inlined_memchr.h"
+
Index: /trunk/src/kmk/config.h.win
===================================================================
--- /trunk/src/kmk/config.h.win	(revision 1812)
+++ /trunk/src/kmk/config.h.win	(revision 1813)
@@ -525,61 +525,4 @@
 #define BATCH_MODE_ONLY_SHELL
 
-#if defined(_M_X64)
-#include <string.h>
-static void *
-my_inline_memchr(const void *pv, int ch, register size_t cb)
-{
-    register const unsigned int   uch = (unsigned)ch;
-    register const unsigned char *pb = (const unsigned char *)pv;
-#if 1 /* this one beats the CRT (on 2nd gen AMD64). */
-    while (cb >= 4)
-    {
-        if (*pb == uch)
-            return (unsigned char *)pb;
-        if (pb[1] == uch)
-            return (unsigned char *)pb + 1;
-        if (pb[2] == uch)
-            return (unsigned char *)pb + 2;
-        if (pb[3] == uch)
-            return (unsigned char *)pb + 3;
-        cb -= 4;
-        pb += 4;
-    }
-    switch (cb & 3)
-    {
-        case 0:
-            break;
-        case 1:
-            if (*pb == uch)
-                return (unsigned char *)pb;
-            break;
-        case 2:
-            if (*pb == uch)
-                return (unsigned char *)pb;
-            if (pb[1] == uch)
-                return (unsigned char *)pb + 1;
-            break;
-        case 3:
-            if (*pb == uch)
-                return (unsigned char *)pb;
-            if (pb[1] == uch)
-                return (unsigned char *)pb + 1;
-            if (pb[2] == uch)
-                return (unsigned char *)pb + 2;
-            break;
-    }
-
-#else /* This is just as good the CRT one. */
-    while (cb > 0)
-    {
-        if (*pb == uch)
-            return (void *)pb;
-        cb--;
-        pb++;
-    }
-#endif
-    return 0;
-}
-#define memchr my_inline_memchr
-#endif
-
+#include "inlined_memchr.h"
+
Index: /trunk/src/kmk/inlined_memchr.h
===================================================================
--- /trunk/src/kmk/inlined_memchr.h	(revision 1813)
+++ /trunk/src/kmk/inlined_memchr.h	(revision 1813)
@@ -0,0 +1,58 @@
+#include <string.h>
+static __inline__ void *
+my_inline_memchr(const void *pv, int ch, register size_t cb)
+{
+    register const unsigned int   uch = (unsigned)ch;
+    register const unsigned char *pb = (const unsigned char *)pv;
+#if 1
+    while (cb >= 4)
+    {
+        if (*pb == uch)
+            return (unsigned char *)pb;
+        if (pb[1] == uch)
+            return (unsigned char *)pb + 1;
+        if (pb[2] == uch)
+            return (unsigned char *)pb + 2;
+        if (pb[3] == uch)
+            return (unsigned char *)pb + 3;
+        cb -= 4;
+        pb += 4;
+    }
+    switch (cb & 3)
+    {
+        case 0:
+            break;
+        case 1:
+            if (*pb == uch)
+                return (unsigned char *)pb;
+            break;
+        case 2:
+            if (*pb == uch)
+                return (unsigned char *)pb;
+            if (pb[1] == uch)
+                return (unsigned char *)pb + 1;
+            break;
+        case 3:
+            if (*pb == uch)
+                return (unsigned char *)pb;
+            if (pb[1] == uch)
+                return (unsigned char *)pb + 1;
+            if (pb[2] == uch)
+                return (unsigned char *)pb + 2;
+            break;
+    }
+
+#else
+    while (cb > 0)
+    {
+        if (*pb == uch)
+            return (void *)pb;
+        cb--;
+        pb++;
+    }
+#endif
+    return 0;
+}
+
+#define memchr my_inline_memchr
+
