2000-04-13 Andreas Jaeger <aj@suse.de>

* 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.
This commit is contained in:
Andreas Jaeger 2000-04-13 19:46:02 +00:00
parent 547ff46273
commit 1cd0f06d0f
5 changed files with 14 additions and 15 deletions

View File

@ -69,7 +69,7 @@ __longjmp (env, val_arg)
asm volatile ("lw $23, %0" : : "m" (env[0].__regs[7])); asm volatile ("lw $23, %0" : : "m" (env[0].__regs[7]));
/* Get the PC. */ /* 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. */ /* Give setjmp 1 if given a 0, or what they gave us if non-zero. */
if (val == 0) if (val == 0)
@ -77,7 +77,7 @@ __longjmp (env, val_arg)
else else
asm volatile ("move $2, %0" : : "r" (val)); asm volatile ("move $2, %0" : : "r" (val));
asm volatile ("j $31"); asm volatile ("jr $25");
/* Avoid `volatile function does return' warnings. */ /* Avoid `volatile function does return' warnings. */
for (;;); for (;;);

View File

@ -1,5 +1,5 @@
/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'. MIPS version. /* 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -23,12 +23,12 @@
#include <sysdep.h> #include <sysdep.h>
#ifdef PIC #ifdef __PIC__
.option pic2 .option pic2
#endif #endif
ENTRY (_setjmp) ENTRY (_setjmp)
.set noreorder .set noreorder
#ifdef PIC #ifdef __PIC__
.cpload t9 .cpload t9
la t9, C_SYMBOL_NAME (__sigsetjmp) la t9, C_SYMBOL_NAME (__sigsetjmp)
jr t9 jr t9

View File

@ -1,5 +1,5 @@
/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. MIPS version. /* 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -23,12 +23,12 @@
#include <sysdep.h> #include <sysdep.h>
#ifdef PIC #ifdef __PIC__
.option pic2 .option pic2
#endif #endif
ENTRY (setjmp) ENTRY (setjmp)
.set noreorder .set noreorder
#ifdef PIC #ifdef __PIC__
.cpload t9 .cpload t9
la t9, C_SYMBOL_NAME (__sigsetjmp) la t9, C_SYMBOL_NAME (__sigsetjmp)
jr t9 jr t9

View 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -21,11 +21,11 @@
/* The function __sigsetjmp_aux saves all the registers, but it can't /* 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 reliably access the stack or frame pointers, so we pass them in as
extra arguments. */ extra arguments. */
#ifdef PIC #ifdef __PIC__
.option pic2 .option pic2
#endif #endif
ENTRY (__sigsetjmp) ENTRY (__sigsetjmp)
#ifdef PIC #ifdef __PIC__
.set noreorder .set noreorder
.cpload t9 .cpload t9
.set reorder .set reorder
@ -36,7 +36,7 @@ ENTRY (__sigsetjmp)
#else #else
move a3, $fp move a3, $fp
#endif #endif
#ifdef PIC #ifdef __PIC__
la t9, __sigsetjmp_aux la t9, __sigsetjmp_aux
jr t9 jr t9
#else #else

View 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. This file is part of the GNU C Library.
Contributed by Brendan Kehoe (brendan@zen.org). Contributed by Brendan Kehoe (brendan@zen.org).
@ -25,9 +25,8 @@ SYSCALL__ (pipe, 1)
sw v1, 4(a0) sw v1, 4(a0)
/* Go out with a clean status. */ /* Go out with a clean status. */
j ra
move v0, zero move v0, zero
nop j ra
.end __pipe .end __pipe
weak_alias (__pipe, pipe) weak_alias (__pipe, pipe)