Formerly unix/i386/sysdep.S.~6~
authorroland <roland>
Thu, 28 Oct 1993 21:47:14 +0000 (21:47 +0000)
committerroland <roland>
Thu, 28 Oct 1993 21:47:14 +0000 (21:47 +0000)
sysdeps/unix/i386/sysdep.S

index 55225ef..4b6ab09 100644 (file)
@@ -17,6 +17,7 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
+#include <errnos.h>
 
 .globl C_SYMBOL_NAME(errno)
 .globl syscall_error
@@ -27,6 +28,14 @@ __syscall_error:
 #else
 syscall_error:
 #endif
-       movl %eax, C_SYMBOL_NAME(errno)
+#ifdef EWOULDBLOCK_sys
+       /* We translate the system's EWOULDBLOCK error into EAGAIN.
+          The GNU C library always defines EWOULDBLOCK==EAGAIN.
+          EWOULDBLOCK_sys is the original number.  */
+       cmpl %eax, $EWOULDBLOCK_sys /* Is it the old EWOULDBLOCK?  */
+       jne 0f                  /* Branch if not.  */
+       move $EAGAIN, %eax      /* Yes; translate it to EAGAIN.  */
+#endif
+0:     movl %eax, C_SYMBOL_NAME(errno)
        movl $-1, %eax
        ret