--- libc/sysdeps/unix/sysv/linux/i386/sysdep.h.orig	2004-11-28 04:45:15.068548992 -0500
+++ libc/sysdeps/unix/sysv/linux/i386/sysdep.h	2004-11-28 04:45:01.550176640 -0500
@@ -45,6 +45,12 @@
 
 #ifdef __ASSEMBLER__
 
+/* __i686 is used in assembler code below as normal text within a statement.
+   When optimizing for pentium2 or pentium3, gcc defines __i686 as cpp macro
+   which destroys the code below. Glibc is only using the cpp macro __i686__,
+   so we can savely undefine __i686 here. - Clifford Wolf */
+#undef __i686
+
 /* Linux uses a negative return value to indicate syscall errors,
    unlike most Unices, which use the condition codes' carry flag.
 
