From: Andreas Jaeger Date: Thu, 13 Apr 2000 19:46:02 +0000 (+0000) Subject: 2000-04-13 Andreas Jaeger X-Git-Tag: upstream/2.30~25847 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1cd0f06d0f6a42708fa18a1d54e30cc5aeed7667;p=external%2Fglibc.git 2000-04-13 Andreas Jaeger * 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 . * sysdeps/mips/bsd-setjmp.S: Use __PIC__. * sysdeps/mips/bsd-_setjmp.S: Likewise. * sysdeps/mips/setjmp.S: Likewise. --- diff --git a/sysdeps/mips/__longjmp.c b/sysdeps/mips/__longjmp.c index e9ef5cf..a1920ca 100644 --- a/sysdeps/mips/__longjmp.c +++ b/sysdeps/mips/__longjmp.c @@ -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 (;;); diff --git a/sysdeps/mips/bsd-_setjmp.S b/sysdeps/mips/bsd-_setjmp.S index 6d841fc..bf7cb15 100644 --- a/sysdeps/mips/bsd-_setjmp.S +++ b/sysdeps/mips/bsd-_setjmp.S @@ -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 @@ -23,12 +23,12 @@ #include -#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 diff --git a/sysdeps/mips/bsd-setjmp.S b/sysdeps/mips/bsd-setjmp.S index 000aee4..bab312b 100644 --- a/sysdeps/mips/bsd-setjmp.S +++ b/sysdeps/mips/bsd-setjmp.S @@ -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 @@ -23,12 +23,12 @@ #include -#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 diff --git a/sysdeps/mips/setjmp.S b/sysdeps/mips/setjmp.S index 607b5f2..804b27e 100644 --- a/sysdeps/mips/setjmp.S +++ b/sysdeps/mips/setjmp.S @@ -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 @@ -21,11 +21,11 @@ /* 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 diff --git a/sysdeps/unix/mips/pipe.S b/sysdeps/unix/mips/pipe.S index dac6174..7066ac7 100644 --- a/sysdeps/unix/mips/pipe.S +++ b/sysdeps/unix/mips/pipe.S @@ -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)