2000-04-13 Andreas Jaeger <aj@suse.de>
authoraj <aj>
Thu, 13 Apr 2000 19:46:02 +0000 (19:46 +0000)
committeraj <aj>
Thu, 13 Apr 2000 19:46:02 +0000 (19:46 +0000)
* sysdeps/unix/mips/pipe.S: Reorder instructions since .reorder is
default.

* sysdeps/mips/__longjmp.c (__longjmp): Use $25 to fix problems
with some applications.
Patches by Ralf Baechle <ralf@uni-koblenz.de>.

* sysdeps/mips/bsd-setjmp.S: Use __PIC__.
* sysdeps/mips/bsd-_setjmp.S: Likewise.
* sysdeps/mips/setjmp.S: Likewise.

sysdeps/mips/__longjmp.c
sysdeps/mips/bsd-_setjmp.S
sysdeps/mips/bsd-setjmp.S
sysdeps/mips/setjmp.S
sysdeps/unix/mips/pipe.S

index e9ef5cf..a1920ca 100644 (file)
@@ -69,7 +69,7 @@ __longjmp (env, val_arg)
   asm volatile ("lw $23, %0" : : "m" (env[0].__regs[7]));
 
   /* Get the PC.  */
-  asm volatile ("lw $31, %0" : : "m" (env[0].__pc));
+  asm volatile ("lw $25, %0" : : "m" (env[0].__pc));
 
   /* Give setjmp 1 if given a 0, or what they gave us if non-zero.  */
   if (val == 0)
@@ -77,7 +77,7 @@ __longjmp (env, val_arg)
   else
     asm volatile ("move $2, %0" : : "r" (val));
 
-  asm volatile ("j $31");
+  asm volatile ("jr $25");
 
   /* Avoid `volatile function does return' warnings.  */
   for (;;);
index 6d841fc..bf7cb15 100644 (file)
@@ -1,5 +1,5 @@
 /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'.  MIPS version.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 
 #include <sysdep.h>
 
-#ifdef PIC
+#ifdef __PIC__
        .option pic2
 #endif
 ENTRY (_setjmp)
        .set noreorder
-#ifdef PIC
+#ifdef __PIC__
        .cpload t9
        la      t9, C_SYMBOL_NAME (__sigsetjmp)
        jr      t9
index 000aee4..bab312b 100644 (file)
@@ -1,5 +1,5 @@
 /* BSD `setjmp' entry point to `sigsetjmp (..., 1)'.  MIPS version.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 
 #include <sysdep.h>
 
-#ifdef PIC
+#ifdef __PIC__
        .option pic2
 #endif
 ENTRY (setjmp)
        .set    noreorder
-#ifdef PIC
+#ifdef __PIC__
        .cpload t9
        la      t9, C_SYMBOL_NAME (__sigsetjmp)
        jr      t9
index 607b5f2..804b27e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
 /* The function __sigsetjmp_aux saves all the registers, but it can't
    reliably access the stack or frame pointers, so we pass them in as
    extra arguments.  */
-#ifdef PIC
+#ifdef __PIC__
        .option pic2
 #endif
 ENTRY (__sigsetjmp)
-#ifdef PIC
+#ifdef __PIC__
        .set    noreorder
        .cpload t9
        .set    reorder
@@ -36,7 +36,7 @@ ENTRY (__sigsetjmp)
 #else
        move    a3, $fp
 #endif
-#ifdef PIC
+#ifdef __PIC__
        la      t9, __sigsetjmp_aux
        jr      t9
 #else
index dac6174..7066ac7 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995, 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Brendan Kehoe (brendan@zen.org).
 
@@ -25,9 +25,8 @@ SYSCALL__ (pipe, 1)
        sw v1, 4(a0)
 
        /* Go out with a clean status.  */
-       j ra
        move v0, zero
-       nop
+       j ra
        .end __pipe
 
 weak_alias (__pipe, pipe)