Formerly unix/bsd/m68k/sysdep.S.~3~
authorRoland McGrath <roland@gnu.org>
Thu, 28 Oct 1993 21:47:12 +0000 (21:47 +0000)
committerRoland McGrath <roland@gnu.org>
Thu, 28 Oct 1993 21:47:12 +0000 (21:47 +0000)
sysdeps/unix/bsd/m68k/sysdep.S

index a6b3c99..fccc605 100644 (file)
@@ -16,13 +16,28 @@ License along with the GNU C Library; see the file COPYING.LIB.  If
 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
+#include <errnos.h>
+
 .globl syscall_error
 syscall_error:
+       /* We translate the system's EWOULDBLOCK error into EAGAIN.
+          The GNU C library always defines EWOULDBLOCK==EAGAIN.
+          EWOULDBLOCK_sys is the original number.  */
 #ifdef __motorola__
-       move.l d0, _errno
+#ifdef EWOULDBLOCK_sys
+       cmp.l d0, #EWOULDBLOCK_sys
+       bne store
+       moveq.l #EAGAIN, d0
+#endif
+store: move.l d0, _errno
        moveq.l #-1, d0
 #else
-       movel d0, _errno
+#ifdef EWOULDBLOCK_sys
+       cmpl d0, #EWOULDBLOCK_sys
+       bne 0f
+       moveq #EAGAIN, d0
+#endif
+0:     movel d0, _errno
        moveq #-1, d0
 #endif
        rts