Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 24 Aug 1999 21:00:04 +0000 (21:00 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 24 Aug 1999 21:00:04 +0000 (21:00 +0000)
* sysdeps/unix/mips/sysdep.h: Use __syscall_error.

* sysdeps/unix/mips/sysdep.S: Rewrite, don't declare errno here.
Patches by Ralf Baechle <ralf@uni-koblenz.de>

1999-08-24  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

ChangeLog
sysdeps/unix/mips/sysdep.S
sysdeps/unix/mips/sysdep.h

index 9308589..d7df6f1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 1999-08-24  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
 
+       * sysdeps/unix/mips/sysdep.h: Use __syscall_error.
+
+       * sysdeps/unix/mips/sysdep.S: Rewrite, don't declare errno here.
+       Patches by Ralf Baechle <ralf@uni-koblenz.de>
+
+1999-08-24  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
        * sysdeps/unix/sysv/linux/net/if_arp.h: Add new constants from
        Linux 2.3.15.
 
index fa88886..f3974bf 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1993, 1994, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1992,93,94,97,98,99 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Brendan Kehoe (brendan@zen.org).
 
 #define _ERRNO_H
 #include <bits/errno.h>
 
-       .bss
-       .globl  errno
-#ifdef __ELF__
-       .type   errno, @object
+#ifdef _LIBC_REENTRANT
+
+ENTRY(__syscall_error)
+#ifdef PIC
+       .set noreorder
+       .set    noat
+       move    $1, $31
+       bltzal  $0, 0f
+       nop
+0:     .cpload $31
+       move    $31, $1
+       .set    at
+       .set    reorder
+#endif
+       subu    sp, 32
+#ifdef __PIC__
+       .cprestore 16
+#endif
+       sw      v0, 20(sp)
+       sw      ra, 24(sp)
+
+#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
+       /* We translate the system's EWOULDBLOCK error into EAGAIN.
+          The GNU C library always defines EWOULDBLOCK==EAGAIN.
+          EWOULDBLOCK_sys is the original number.  */
+       bne     v0, EWOULDBLOCK_sys, skip
+       nop
+       li      v0, EAGAIN
+skip:
 #endif
-       .size   errno, 4
-errno:
-       .space  4
+       /* Store it in the "real" variable ... */
+       sw v0, errno
 
-weak_alias (errno, _errno)
+       /* Find our per-thread errno address  */
+       jal     __errno_location
+
+       /* Store the error value.  */
+       lw      t0, 20(sp)
+       sw      t0, 0(v0)
+
+       /* And just kick back a -1.  */
+       lw      ra, 24(sp)
+       addiu   sp, 32
+       li      v0, -1
+       j       ra
+       END(__syscall_error)
+
+#else /* _LIBC_REENTRANT */
 
-       .set noreorder
 
 ENTRY(__syscall_error)
-#ifdef PIC
+#ifdef __PIC__
+       .set    noreorder
        .set    noat
        move    $1, $31
        bltzal  $0, 0f
@@ -43,13 +81,13 @@ ENTRY(__syscall_error)
 0:     .cpload $31
        move    $31, $1
        .set    at
+       .set    reorder
 #endif
 #if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
        /* We translate the system's EWOULDBLOCK error into EAGAIN.
           The GNU C library always defines EWOULDBLOCK==EAGAIN.
           EWOULDBLOCK_sys is the original number.  */
        bne v0, EWOULDBLOCK_sys, skip
-       nop
        li v0, EAGAIN
 skip:
 #endif
@@ -57,10 +95,7 @@ skip:
        sw v0, errno
 
        /* And just kick back a -1.  */
-       j ra
        li v0, -1
+       j ra
        END(__syscall_error)
-
-/* We provide this alias for compatilility with other Unices
-   like IRIX 5  */
-weak_alias (__syscall_error, syscall_error)
+#endif  /* _LIBC_REENTRANT  */
index 4514d07..256b0a7 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995, 1997, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Brendan Kehoe (brendan@zen.org).
 
   .ent name,0;                                                               \
   name##:
 
-/* Note that while it's better structurally, going back to call syscall_error
+/* Note that while it's better structurally, going back to call __syscall_error
    can make things confusing if you're debugging---it looks like it's jumping
    backwards into the previous fn.  */
-#ifdef __PIC__
+#ifdef PIC
  #define PSEUDO(name, syscall_name, args) \
   .align 2;                                                                  \
-  99: la t9,syscall_error;                                                   \
+  99: la t9,__syscall_error;                                                 \
   jr t9;                                                                     \
   ENTRY(name)                                                                \
   .set noreorder;                                                            \
@@ -49,7 +49,7 @@ syse1:
 #define PSEUDO(name, syscall_name, args) \
   .set noreorder;                                                            \
   .align 2;                                                                  \
-  99: j syscall_error;                                                       \
+  99: j __syscall_error;                                                             \
   ENTRY(name)                                                                \
   .set noreorder;                                                            \
   li v0, SYS_##syscall_name;                                                 \