* elf/tst-tls8.c (do_test): Use $ORIGIN in module names.

2006-01-03  Steven Munroe  <sjmunroe@us.ibm.com>

	* sysdeps/generic/sysdep.h (cfi_same_value): Define macro.

	* sysdeps/powerpc/powerpc32/dl-trampoline.S (_dl_runtime_resolve,
	_dl_profile_resolve): Add CFI directives for stack and LR save.
	Save LR in LRSAVE of previous frame per ABI.
	* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Add CFI directives
	for LR save.
	* sysdeps/powerpc/powerpc32/lshift.S: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
	(__makecontext, __novec_makecontext): Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: Add CFI directive
	for LR save to register.
	* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S: Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_floor.S: Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_floorf.S: Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_rint.S: Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_rintf.S: Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_round.S: Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Likewise.
	* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Add CFI directive
	for stack.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Likewise.
	* sysdeps/powerpc/powerpc32/ppc-mcount.S: Add CFI directives for stack
	and LR save.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S:
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S:
	Likewise.
	* sysdeps/powerpc/powerpc32/fpu/s_lround.S:  Likewise.  Don't use
	negative stack addressing.

	* sysdeps/powerpc/powerpc64/dl-trampoline.S (_dl_runtime_resolve,
	_dl_profile_resolve): Add CFI directives for stack and LR save.
	* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Add CFI directives
	for stack.
	* sysdeps/powerpc/powerpc64/ppc-mcount.S (_mcount): Add CFI
	directives for stack and LR save.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S (__brk): Add CFI
	directives for stack.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S (__clone): Add CFI
	directives for stack.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
	(__getcontext, __novec_getcontext): Add CFI directives for stack
	and LR save.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S
	(__makecontext): Add CFI directives for stack and LR save.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
	(__setcontext, __novec_setcontext): Add CFI directives for stack
	and LR save.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
	(__swapcontext, __novec_swapcontext):  Add CFI directives for stack
	and LR save.
This commit is contained in:
Ulrich Drepper 2006-01-07 03:58:05 +00:00
parent ae4ad00acb
commit a7e915610a
35 changed files with 267 additions and 121 deletions

View File

@ -1,3 +1,68 @@
2006-01-06 Ulrich Drepper <drepper@redhat.com>
* elf/tst-tls8.c (do_test): Use $ORIGIN in module names.
2006-01-03 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/generic/sysdep.h (cfi_same_value): Define macro.
* sysdeps/powerpc/powerpc32/dl-trampoline.S (_dl_runtime_resolve,
_dl_profile_resolve): Add CFI directives for stack and LR save.
Save LR in LRSAVE of previous frame per ABI.
* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Add CFI directives
for LR save.
* sysdeps/powerpc/powerpc32/lshift.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
(__makecontext, __novec_makecontext): Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_floorf.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_rintf.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_round.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Add CFI directive
for stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Likewise.
* sysdeps/powerpc/powerpc32/ppc-mcount.S: Add CFI directives for stack
and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S:
Likewise.
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Likewise. Don't use
negative stack addressing.
* sysdeps/powerpc/powerpc64/dl-trampoline.S (_dl_runtime_resolve,
_dl_profile_resolve): Add CFI directives for stack and LR save.
* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Add CFI directives
for stack.
* sysdeps/powerpc/powerpc64/ppc-mcount.S (_mcount): Add CFI
directives for stack and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S (__brk): Add CFI
directives for stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S (__clone): Add CFI
directives for stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
(__getcontext, __novec_getcontext): Add CFI directives for stack
and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S
(__makecontext): Add CFI directives for stack and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
(__setcontext, __novec_setcontext): Add CFI directives for stack
and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
(__swapcontext, __novec_swapcontext): Add CFI directives for stack
and LR save.
2006-01-06 Jakub Jelinek <jakub@redhat.com> 2006-01-06 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Include tls.h. * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Include tls.h.

View File

@ -11,8 +11,8 @@ static int
do_test (void) do_test (void)
{ {
#ifdef USE_TLS #ifdef USE_TLS
static const char modname1[] = "tst-tlsmod3.so"; static const char modname1[] = "$ORIGIN/tst-tlsmod3.so";
static const char modname2[] = "tst-tlsmod4.so"; static const char modname2[] = "$ORIGIN/tst-tlsmod4.so";
int result = 0; int result = 0;
int (*fp1) (void); int (*fp1) (void);
int (*fp2) (int, int *); int (*fp2) (int, int *);

View File

@ -60,6 +60,7 @@
# define cfi_register(r1, r2) .cfi_register r1, r2 # define cfi_register(r1, r2) .cfi_register r1, r2
# define cfi_return_column(reg) .cfi_return_column reg # define cfi_return_column(reg) .cfi_return_column reg
# define cfi_restore(reg) .cfi_restore reg # define cfi_restore(reg) .cfi_restore reg
# define cfi_same_value(reg) .cfi_same_value reg
# define cfi_undefined(reg) .cfi_undefined reg # define cfi_undefined(reg) .cfi_undefined reg
# define cfi_remember_state .cfi_remember_state # define cfi_remember_state .cfi_remember_state
# define cfi_restore_state .cfi_restore_state # define cfi_restore_state .cfi_restore_state
@ -76,6 +77,7 @@
# define cfi_register(r1, r2) # define cfi_register(r1, r2)
# define cfi_return_column(reg) # define cfi_return_column(reg)
# define cfi_restore(reg) # define cfi_restore(reg)
# define cfi_same_value(reg)
# define cfi_undefined(reg) # define cfi_undefined(reg)
# define cfi_remember_state # define cfi_remember_state
# define cfi_restore_state # define cfi_restore_state

View File

@ -1,5 +1,5 @@
/* PLT trampolines. PPC32 version. /* PLT trampolines. PPC32 version.
Copyright (C) 2005 Free Software Foundation, Inc. Copyright (C) 2005, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
@ -24,9 +24,11 @@
.globl _dl_runtime_resolve .globl _dl_runtime_resolve
.type _dl_runtime_resolve,@function .type _dl_runtime_resolve,@function
_dl_runtime_resolve: _dl_runtime_resolve:
cfi_startproc
# We need to save the registers used to pass parameters, and register 0, # We need to save the registers used to pass parameters, and register 0,
# which is used by _mcount; the registers are saved in a stack frame. # which is used by _mcount; the registers are saved in a stack frame.
stwu r1,-64(r1) stwu r1,-64(r1)
cfi_adjust_cfa_offset (64)
stw r0,12(r1) stw r0,12(r1)
stw r3,16(r1) stw r3,16(r1)
stw r4,20(r1) stw r4,20(r1)
@ -38,7 +40,8 @@ _dl_runtime_resolve:
mflr r0 mflr r0
# We also need to save some of the condition register fields # We also need to save some of the condition register fields
stw r7,32(r1) stw r7,32(r1)
stw r0,48(r1) stw r0,68(r1)
cfi_offset (lr, 4)
stw r8,36(r1) stw r8,36(r1)
mfcr r0 mfcr r0
stw r9,40(r1) stw r9,40(r1)
@ -48,7 +51,7 @@ _dl_runtime_resolve:
# 'fixup' returns the address we want to branch to. # 'fixup' returns the address we want to branch to.
mtctr r3 mtctr r3
# Put the registers back... # Put the registers back...
lwz r0,48(r1) lwz r0,68(r1)
lwz r10,44(r1) lwz r10,44(r1)
lwz r9,40(r1) lwz r9,40(r1)
mtlr r0 mtlr r0
@ -64,6 +67,7 @@ _dl_runtime_resolve:
# ...unwind the stack frame, and jump to the PLT entry we updated. # ...unwind the stack frame, and jump to the PLT entry we updated.
addi r1,r1,64 addi r1,r1,64
bctr bctr
cfi_endproc
.size _dl_runtime_resolve,.-_dl_runtime_resolve .size _dl_runtime_resolve,.-_dl_runtime_resolve
#ifndef PROF #ifndef PROF
@ -71,9 +75,11 @@ _dl_runtime_resolve:
.globl _dl_prof_resolve .globl _dl_prof_resolve
.type _dl_prof_resolve,@function .type _dl_prof_resolve,@function
_dl_prof_resolve: _dl_prof_resolve:
cfi_startproc
# We need to save the registers used to pass parameters, and register 0, # We need to save the registers used to pass parameters, and register 0,
# which is used by _mcount; the registers are saved in a stack frame. # which is used by _mcount; the registers are saved in a stack frame.
stwu r1,-320(r1) stwu r1,-320(r1)
cfi_adjust_cfa_offset (320)
/* Stack layout: /* Stack layout:
+312 stackframe +312 stackframe
@ -122,7 +128,8 @@ _dl_prof_resolve:
mflr r5 mflr r5
# We also need to save some of the condition register fields. # We also need to save some of the condition register fields.
stw r7,32(r1) stw r7,32(r1)
stw r5,308(r1) stw r5,324(r1)
cfi_offset (lr, 4)
stw r8,36(r1) stw r8,36(r1)
mfcr r0 mfcr r0
stw r9,40(r1) stw r9,40(r1)
@ -147,7 +154,7 @@ _dl_prof_resolve:
# 'fixup' returns the address we want to branch to. # 'fixup' returns the address we want to branch to.
mtctr r3 mtctr r3
# Put the registers back... # Put the registers back...
lwz r0,308(r1) lwz r0,324(r1)
lwz r10,44(r1) lwz r10,44(r1)
lwz r9,40(r1) lwz r9,40(r1)
mtlr r0 mtlr r0
@ -172,5 +179,6 @@ _dl_prof_resolve:
# ...unwind the stack frame, and jump to the PLT entry we updated. # ...unwind the stack frame, and jump to the PLT entry we updated.
addi r1,r1,320 addi r1,r1,320
bctr bctr
cfi_endproc
.size _dl_prof_resolve,.-_dl_prof_resolve .size _dl_prof_resolve,.-_dl_prof_resolve
#endif #endif

View File

@ -1,5 +1,5 @@
/* longjmp for PowerPC. /* longjmp for PowerPC.
Copyright (C) 1995-99, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 1995-99, 2000, 2003-2005, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#define _ASM #define _ASM
@ -34,6 +34,7 @@ ENTRY (BP_SYM (__longjmp))
#ifndef __NO_VMX__ #ifndef __NO_VMX__
# ifdef PIC # ifdef PIC
mflr r6 mflr r6
cfi_register (lr,r6)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r5 1: mflr r5
@ -46,10 +47,12 @@ ENTRY (BP_SYM (__longjmp))
# ifdef SHARED # ifdef SHARED
lwz r5,_rtld_global_ro@got(r5) lwz r5,_rtld_global_ro@got(r5)
mtlr r6 mtlr r6
cfi_same_value (lr)
lwz r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r5) lwz r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r5)
# else # else
lwz r5,_dl_hwcap@got(r5) lwz r5,_dl_hwcap@got(r5)
mtlr r6 mtlr r6
cfi_same_value (lr)
lwz r5,0(r5) lwz r5,0(r5)
# endif # endif
# else # else

View File

@ -1,5 +1,5 @@
/* ceil function. PowerPC32 version. /* ceil function. PowerPC32 version.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
@ -29,19 +29,20 @@ ENTRY (__ceil)
mffs fp11 /* Save current FPU rounding mode. */ mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r9 1: mflr r9
addis r9,r9,.LC0-1b@ha addis r9,r9,.LC0-1b@ha
mtlr r11
lfs fp13,.LC0-1b@l(r9) lfs fp13,.LC0-1b@l(r9)
# else # else
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10 mflr r10
lwz r9,.LC0@got(10) lwz r9,.LC0@got(10)
mtlr r11
lfs fp13,0(r9) lfs fp13,0(r9)
# endif # endif
mtlr r11
cfi_same_value (lr)
#else #else
lis r9,.LC0@ha lis r9,.LC0@ha
lfs fp13,.LC0@l(r9) lfs fp13,.LC0@l(r9)

View File

@ -1,5 +1,5 @@
/* float ceil function. PowerPC32 version. /* float ceil function. PowerPC32 version.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
@ -29,19 +29,20 @@ ENTRY (__ceilf)
mffs fp11 /* Save current FPU rounding mode. */ mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r9 1: mflr r9
addis r9,r9,.LC0-1b@ha addis r9,r9,.LC0-1b@ha
mtlr r11
lfs fp13,.LC0-1b@l(r9) lfs fp13,.LC0-1b@l(r9)
# else # else
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10 mflr r10
lwz r9,.LC0@got(10) lwz r9,.LC0@got(10)
mtlr r11
lfs fp13,0(r9) lfs fp13,0(r9)
# endif # endif
mtlr r11
cfi_same_value (lr)
#else #else
lis r9,.LC0@ha lis r9,.LC0@ha
lfs fp13,.LC0@l(r9) lfs fp13,.LC0@l(r9)

View File

@ -1,5 +1,5 @@
/* Copy a sign bit between floating-point values. /* Copy a sign bit between floating-point values.
Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2000, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
/* This has been coded in assembler because GCC makes such a mess of it /* This has been coded in assembler because GCC makes such a mess of it
when it's coded in C. */ when it's coded in C. */
@ -27,6 +27,7 @@ ENTRY(__copysign)
copysign(x,y) returns a value with the magnitude of x and copysign(x,y) returns a value with the magnitude of x and
with the sign bit of y. */ with the sign bit of y. */
stwu r1,-16(r1) stwu r1,-16(r1)
cfi_adjust_cfa_offset (16)
stfd fp2,8(r1) stfd fp2,8(r1)
lwz r3,8(r1) lwz r3,8(r1)
cmpwi r3,0 cmpwi r3,0

View File

@ -1,5 +1,5 @@
/* Floor function. PowerPC32 version. /* Floor function. PowerPC32 version.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
@ -29,19 +29,20 @@ ENTRY (__floor)
mffs fp11 /* Save current FPU rounding mode. */ mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r9 1: mflr r9
addis r9,r9,.LC0-1b@ha addis r9,r9,.LC0-1b@ha
mtlr r11
lfs fp13,.LC0-1b@l(r9) lfs fp13,.LC0-1b@l(r9)
# else # else
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10 mflr r10
lwz r9,.LC0@got(10) lwz r9,.LC0@got(10)
mtlr r11
lfs fp13,0(r9) lfs fp13,0(r9)
# endif # endif
mtlr r11
cfi_same_value (lr)
#else #else
lis r9,.LC0@ha lis r9,.LC0@ha
lfs fp13,.LC0@l(r9) lfs fp13,.LC0@l(r9)

View File

@ -1,5 +1,5 @@
/* float Floor function. PowerPC32 version. /* float Floor function. PowerPC32 version.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
@ -29,19 +29,20 @@ ENTRY (__floorf)
mffs fp11 /* Save current FPU rounding mode. */ mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r9 1: mflr r9
addis r9,r9,.LC0-1b@ha addis r9,r9,.LC0-1b@ha
mtlr r11
lfs fp13,.LC0-1b@l(r9) lfs fp13,.LC0-1b@l(r9)
# else # else
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10 mflr r10
lwz r9,.LC0@got(10) lwz r9,.LC0@got(10)
mtlr r11
lfs fp13,0(r9) lfs fp13,0(r9)
# endif # endif
mtlr r11
cfi_same_value (lr)
#else #else
lis r9,.LC0@ha lis r9,.LC0@ha
lfs fp13,.LC0@l(r9) lfs fp13,.LC0@l(r9)

View File

@ -1,5 +1,5 @@
/* lround function. PowerPC32 version. /* lround function. PowerPC32 version.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
@ -39,8 +39,11 @@
to the integer value. */ to the integer value. */
ENTRY (__lround) ENTRY (__lround)
stwu r1,-16(r1)
cfi_adjust_cfa_offset (16)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r9 1: mflr r9
@ -52,6 +55,7 @@ ENTRY (__lround)
lwz r9,.LC0@got(10) lwz r9,.LC0@got(10)
# endif # endif
mtlr r11 mtlr r11
cfi_same_value (lr)
lfs fp12,0(r9) lfs fp12,0(r9)
#else #else
lis r9,.LC0@ha lis r9,.LC0@ha
@ -68,11 +72,12 @@ ENTRY (__lround)
fadd fp1,fp1,fp10 /* x+= 0.5; */ fadd fp1,fp1,fp10 /* x+= 0.5; */
.L9: .L9:
fctiwz fp2,fp1 /* Convert To Integer DW lround toward 0. */ fctiwz fp2,fp1 /* Convert To Integer DW lround toward 0. */
stfd fp2,-8(r1) stfd fp2,8(r1)
nop /* Ensure the following load is in a different dispatch */ nop /* Ensure the following load is in a different dispatch */
nop /* group to avoid pipe stall on POWER4&5. */ nop /* group to avoid pipe stall on POWER4&5. */
nop nop
lwz r3,-4(r1) lwz r3,12(r1)
addi r1,r1,16
blr blr
.L4: .L4:
fsub fp1,fp1,fp10 /* x-= 0.5; */ fsub fp1,fp1,fp10 /* x-= 0.5; */

View File

@ -1,5 +1,5 @@
/* Round to int floating-point values. PowerPC32 version. /* Round to int floating-point values. PowerPC32 version.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
/* This has been coded in assembler because GCC makes such a mess of it /* This has been coded in assembler because GCC makes such a mess of it
when it's coded in C. */ when it's coded in C. */
@ -31,19 +31,20 @@
ENTRY (__rint) ENTRY (__rint)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r9 1: mflr r9
addis r9,r9,.LC0-1b@ha addis r9,r9,.LC0-1b@ha
mtlr r11
lfs fp13,.LC0-1b@l(r9) lfs fp13,.LC0-1b@l(r9)
# else # else
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10 mflr r10
lwz r9,.LC0@got(10) lwz r9,.LC0@got(10)
mtlr r11
lfs fp13,0(r9) lfs fp13,0(r9)
# endif # endif
mtlr r11
cfi_same_value (lr)
#else #else
lis r9,.LC0@ha lis r9,.LC0@ha
lfs fp13,.LC0@l(r9) lfs fp13,.LC0@l(r9)

View File

@ -1,5 +1,5 @@
/* Round float to int floating-point values. PowerPC32 version. /* Round float to int floating-point values. PowerPC32 version.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
@ -28,19 +28,20 @@
ENTRY (__rintf) ENTRY (__rintf)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r9 1: mflr r9
addis r9,r9,.LC0-1b@ha addis r9,r9,.LC0-1b@ha
mtlr r11
lfs fp13,.LC0-1b@l(r9) lfs fp13,.LC0-1b@l(r9)
# else # else
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10 mflr r10
lwz r9,.LC0@got(10) lwz r9,.LC0@got(10)
mtlr r11
lfs fp13,0(r9) lfs fp13,0(r9)
# endif # endif
mtlr r11
cfi_same_value (lr)
#else #else
lis r9,.LC0@ha lis r9,.LC0@ha
lfs fp13,.LC0@l(r9) lfs fp13,.LC0@l(r9)

View File

@ -1,5 +1,5 @@
/* round function. PowerPC32 version. /* round function. PowerPC32 version.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
@ -41,6 +41,7 @@ ENTRY (__round)
mffs fp11 /* Save current FPU rounding mode. */ mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r9 1: mflr r9
@ -52,6 +53,7 @@ ENTRY (__round)
lwz r9,.LC0@got(10) lwz r9,.LC0@got(10)
# endif # endif
mtlr r11 mtlr r11
cfi_same_value (lr)
lfs fp13,0(r9) lfs fp13,0(r9)
#else #else
lis r9,.LC0@ha lis r9,.LC0@ha

View File

@ -1,5 +1,5 @@
/* roundf function. PowerPC32 version. /* roundf function. PowerPC32 version.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
@ -41,6 +41,7 @@ ENTRY (__roundf )
mffs fp11 /* Save current FPU rounding mode. */ mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r9 1: mflr r9
@ -52,6 +53,7 @@ ENTRY (__roundf )
lwz r9,.LC0@got(10) lwz r9,.LC0@got(10)
# endif # endif
mtlr r11 mtlr r11
cfi_same_value (lr)
lfs fp13,0(r9) lfs fp13,0(r9)
#else #else
lis r9,.LC0@ha lis r9,.LC0@ha

View File

@ -1,5 +1,5 @@
/* trunc function. PowerPC32 version. /* trunc function. PowerPC32 version.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
@ -36,19 +36,20 @@ ENTRY (__trunc)
mffs fp11 /* Save current FPU rounding mode. */ mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r9 1: mflr r9
addis r9,r9,.LC0-1b@ha addis r9,r9,.LC0-1b@ha
mtlr r11
lfs fp13,.LC0-1b@l(r9) lfs fp13,.LC0-1b@l(r9)
# else # else
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10 mflr r10
lwz r9,.LC0@got(10) lwz r9,.LC0@got(10)
mtlr r11
lfs fp13,0(r9) lfs fp13,0(r9)
# endif # endif
mtlr r11
cfi_same_value (lr)
#else #else
lis r9,.LC0@ha lis r9,.LC0@ha
lfs fp13,.LC0@l(r9) lfs fp13,.LC0@l(r9)

View File

@ -1,5 +1,5 @@
/* truncf function. PowerPC32 version. /* truncf function. PowerPC32 version.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
@ -36,19 +36,20 @@ ENTRY (__truncf)
mffs fp11 /* Save current FPU rounding mode. */ mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r9 1: mflr r9
addis r9,r9,.LC0-1b@ha addis r9,r9,.LC0-1b@ha
mtlr r11
lfs fp13,.LC0-1b@l(r9) lfs fp13,.LC0-1b@l(r9)
# else # else
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10 mflr r10
lwz r9,.LC0@got(10) lwz r9,.LC0@got(10)
mtlr r11
lfs fp13,0(r9) lfs fp13,0(r9)
# endif # endif
mtlr r11
cfi_same_value (lr)
#else #else
lis r9,.LC0@ha lis r9,.LC0@ha
lfs fp13,.LC0@l(r9) lfs fp13,.LC0@l(r9)

View File

@ -1,5 +1,5 @@
/* setjmp for PowerPC. /* setjmp for PowerPC.
Copyright (C) 1995-2000, 2003, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 1995-2000, 2003-2005, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#define _ASM #define _ASM
@ -85,6 +85,7 @@ ENTRY (BP_SYM (__sigsetjmp))
#ifndef __NO_VMX__ #ifndef __NO_VMX__
# ifdef PIC # ifdef PIC
mflr r6 mflr r6
cfi_register(lr,r6)
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r5 1: mflr r5
@ -94,13 +95,13 @@ ENTRY (BP_SYM (__sigsetjmp))
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r5 mflr r5
# endif # endif
mtlr r6
cfi_same_value (lr)
# ifdef SHARED # ifdef SHARED
lwz r5,_rtld_global_ro@got(r5) lwz r5,_rtld_global_ro@got(r5)
mtlr r6
lwz r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r5) lwz r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r5)
# else # else
lwz r5,_dl_hwcap@got(r5) lwz r5,_dl_hwcap@got(r5)
mtlr r6
lwz r5,0(r5) lwz r5,0(r5)
# endif # endif
# else # else

View File

@ -1,5 +1,5 @@
/* Shift a limb left, low level routine. /* Shift a limb left, low level routine.
Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1999, 2000, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#include <bp-sym.h> #include <bp-sym.h>
@ -67,6 +67,7 @@ L(boom): tweq r0,r0
/* We imitate a case statement, by using (yuk!) fixed-length code chunks, /* We imitate a case statement, by using (yuk!) fixed-length code chunks,
of size 4*12 bytes. We have to do this (or something) to make this PIC. */ of size 4*12 bytes. We have to do this (or something) to make this PIC. */
L(big): mflr r9 L(big): mflr r9
cfi_register(lr,r9)
bltl- cr0,L(boom) # Never taken, only used to set LR. bltl- cr0,L(boom) # Never taken, only used to set LR.
slwi r10,r6,4 slwi r10,r6,4
mflr r12 mflr r12
@ -75,7 +76,8 @@ L(big): mflr r9
add r10,r8,r10 add r10,r8,r10
mtctr r10 mtctr r10
addi r5,r5,-1 addi r5,r5,-1
mtlr r9 mtlr r9
cfi_same_value (lr)
bctr bctr
L(end2):slw r0,r10,r6 L(end2):slw r0,r10,r6

View File

@ -1,5 +1,5 @@
/* PowerPC-specific implementation of profiling support. /* PowerPC-specific implementation of profiling support.
Copyright (C) 1997, 1999, 2005 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2005, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
/* This would be bad. */ /* This would be bad. */
#ifdef PROF #ifdef PROF
@ -42,6 +42,7 @@
ENTRY(_mcount) ENTRY(_mcount)
stwu r1,-48(r1) stwu r1,-48(r1)
cfi_adjust_cfa_offset (48)
/* We need to save the parameter-passing registers. */ /* We need to save the parameter-passing registers. */
stw r3, 12(r1) stw r3, 12(r1)
stw r4, 16(r1) stw r4, 16(r1)
@ -55,6 +56,7 @@ ENTRY(_mcount)
stw r9, 36(r1) stw r9, 36(r1)
stw r10,40(r1) stw r10,40(r1)
stw r4, 44(r1) stw r4, 44(r1)
cfi_offset (lr, -4)
stw r5, 8(r1) stw r5, 8(r1)
bl __mcount_internal@local bl __mcount_internal@local
nop nop

View File

@ -1,5 +1,5 @@
/* PLT trampolines. PPC64 version. /* PLT trampolines. PPC64 version.
Copyright (C) 2005 Free Software Foundation, Inc. Copyright (C) 2005, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#include <rtld-global-offsets.h> #include <rtld-global-offsets.h>
@ -31,6 +31,7 @@ EALIGN(_dl_runtime_resolve, 4, 0)
/* We need to save the registers used to pass parameters, ie. r3 thru /* We need to save the registers used to pass parameters, ie. r3 thru
r10; the registers are saved in a stack frame. */ r10; the registers are saved in a stack frame. */
stdu r1,-128(r1) stdu r1,-128(r1)
cfi_adjust_cfa_offset (128)
std r3,48(r1) std r3,48(r1)
mr r3,r11 mr r3,r11
std r4,56(r1) std r4,56(r1)
@ -44,6 +45,7 @@ EALIGN(_dl_runtime_resolve, 4, 0)
std r8,88(r1) std r8,88(r1)
/* Store the LR in the LR Save area of the previous frame. */ /* Store the LR in the LR Save area of the previous frame. */
std r0,128+16(r1) std r0,128+16(r1)
cfi_offset (lr, 16)
mfcr r0 mfcr r0
std r9,96(r1) std r9,96(r1)
std r10,104(r1) std r10,104(r1)
@ -178,6 +180,7 @@ EALIGN(_dl_profile_resolve, 4, 0)
/* We need to save the registers used to pass parameters, ie. r3 thru /* We need to save the registers used to pass parameters, ie. r3 thru
r10; the registers are saved in a stack frame. */ r10; the registers are saved in a stack frame. */
stdu r1,-FRAME_SIZE(r1) stdu r1,-FRAME_SIZE(r1)
cfi_adjust_cfa_offset (FRAME_SIZE)
std r3,INT_PARMS+0(r1) std r3,INT_PARMS+0(r1)
mr r3,r11 mr r3,r11
std r4,INT_PARMS+8(r1) std r4,INT_PARMS+8(r1)
@ -193,6 +196,7 @@ EALIGN(_dl_profile_resolve, 4, 0)
/* XXX Do we have to do this? */ /* XXX Do we have to do this? */
la r8,FRAME_SIZE(r1) la r8,FRAME_SIZE(r1)
std r5,FRAME_SIZE+16(r1) std r5,FRAME_SIZE+16(r1)
cfi_offset (lr, 16)
std r5,CALLING_LR(r1) std r5,CALLING_LR(r1)
mfcr r0 mfcr r0
std r9,INT_PARMS+48(r1) std r9,INT_PARMS+48(r1)

View File

@ -28,7 +28,11 @@ ENTRY(__copysign)
copysign(x,y) returns a value with the magnitude of x and copysign(x,y) returns a value with the magnitude of x and
with the sign bit of y. */ with the sign bit of y. */
stdu r1,-48(r1) stdu r1,-48(r1)
cfi_adjust_cfa_offset (48)
stfd fp2,24(r1) stfd fp2,24(r1)
nop
nop
nop
ld r3,24(r1) ld r3,24(r1)
cmpdi r3,0 cmpdi r3,0
addi r1,r1,48 addi r1,r1,48

View File

@ -1,5 +1,5 @@
/* PowerPC64-specific implementation of profiling support. /* PowerPC64-specific implementation of profiling support.
Copyright (C) 1997, 1999, 2002 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2002, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
/* We don't need to save the parameter-passing registers as gcc takes /* We don't need to save the parameter-passing registers as gcc takes
@ -26,7 +26,9 @@ ENTRY(_mcount)
mflr r4 mflr r4
ld r11, 0(r1) ld r11, 0(r1)
stdu r1,-112(r1) stdu r1,-112(r1)
cfi_adjust_cfa_offset (112)
std r4, 128(r1) std r4, 128(r1)
cfi_offset (lr, 16)
ld r3, 16(r11) ld r3, 16(r11)
bl JUMPTARGET(__mcount_internal) bl JUMPTARGET(__mcount_internal)
nop nop

View File

@ -1,5 +1,5 @@
/* brk system call for Linux/ppc. /* brk system call for Linux/ppc.
Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. Copyright (C) 1995-97, 1999, 2000, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#define _ERRNO_H 1 #define _ERRNO_H 1
@ -27,32 +27,34 @@
.section ".text" .section ".text"
ENTRY (BP_SYM (__brk)) ENTRY (BP_SYM (__brk))
DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em */ DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em */
mflr r0
stwu r1,-16(r1) stwu r1,-16(r1)
cfi_adjust_cfa_offset (16)
stw r3,8(r1) stw r3,8(r1)
stw r0,20(r1)
cfi_offset (lr, 4)
DO_CALL(SYS_ify(brk)) DO_CALL(SYS_ify(brk))
lwz r6,8(r1) lwz r6,8(r1)
#ifdef PIC #ifdef PIC
mflr r4
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f bcl 20,31,1f
1: mflr r5 1: mflr r5
addis r5,r5,__curbrk-1b@ha addis r5,r5,__curbrk-1b@ha
mtlr r4
stw r3,__curbrk-1b@l(r5) stw r3,__curbrk-1b@l(r5)
# else # else
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r5 mflr r5
lwz r5,__curbrk@got(r5) lwz r5,__curbrk@got(r5)
mtlr r4
stw r3,0(r5) stw r3,0(r5)
# endif # endif
#else #else
lis r4,__curbrk@ha lis r4,__curbrk@ha
stw r3,__curbrk@l(r4) stw r3,__curbrk@l(r4)
#endif #endif
lwz r0,20(r1)
cmplw r6,r3 cmplw r6,r3
addi r1,r1,16 addi r1,r1,16
mtlr r0
li r3,0 li r3,0
blelr+ blelr+
li r3,ENOMEM li r3,ENOMEM

View File

@ -1,5 +1,5 @@
/* Wrapper around clone system call. /* Wrapper around clone system call.
Copyright (C) 1997,98,99,2000,02,2004 Free Software Foundation, Inc. Copyright (C) 1997,98,99,2000,02,04,2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#define _ERRNO_H 1 #define _ERRNO_H 1
@ -49,6 +49,7 @@ ENTRY (BP_SYM (__clone))
/* Set up stack frame for parent. */ /* Set up stack frame for parent. */
stwu r1,-32(r1) stwu r1,-32(r1)
cfi_adjust_cfa_offset (32)
#ifdef RESET_PID #ifdef RESET_PID
stmw r28,16(r1) stmw r28,16(r1)
#else #else

View File

@ -1,5 +1,5 @@
/* Save current context, powerpc32 common. /* Save current context, powerpc32 common.
Copyright (C) 2005 Free Software Foundation, Inc. Copyright (C) 2005, 2006 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
@ -40,6 +40,7 @@
#endif #endif
ENTRY(__CONTEXT_FUNC_NAME) ENTRY(__CONTEXT_FUNC_NAME)
stwu r1,-16(r1) stwu r1,-16(r1)
cfi_adjust_cfa_offset (16)
/* Insure that the _UC_REGS start on a quadword boundary. */ /* Insure that the _UC_REGS start on a quadword boundary. */
stw r3,_FRAME_PARM_SAVE1(r1) stw r3,_FRAME_PARM_SAVE1(r1)
addi r3,r3,_UC_REG_SPACE+12 addi r3,r3,_UC_REG_SPACE+12
@ -55,6 +56,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
stw r0,_UC_GREGS+(PT_LNK*4)(r3) stw r0,_UC_GREGS+(PT_LNK*4)(r3)
stw r0,_UC_GREGS+(PT_NIP*4)(r3) stw r0,_UC_GREGS+(PT_NIP*4)(r3)
stw r0,_FRAME_LR_SAVE+16(r1) stw r0,_FRAME_LR_SAVE+16(r1)
cfi_offset (lr, _FRAME_LR_SAVE)
stw r5,_UC_GREGS+(PT_R5*4)(r3) stw r5,_UC_GREGS+(PT_R5*4)(r3)
stw r6,_UC_GREGS+(PT_R6*4)(r3) stw r6,_UC_GREGS+(PT_R6*4)(r3)
stw r7,_UC_GREGS+(PT_R7*4)(r3) stw r7,_UC_GREGS+(PT_R7*4)(r3)

View File

@ -1,5 +1,5 @@
/* Set up a context to call a function. /* Set up a context to call a function.
Copyright (C) 2002, 2004 Free Software Foundation, Inc. Copyright (C) 2002, 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#include <shlib-compat.h> #include <shlib-compat.h>
@ -49,10 +49,12 @@ ENTRY(__makecontext)
/* Set the function's LR to point to the exitcode below. */ /* Set the function's LR to point to the exitcode below. */
#ifdef PIC #ifdef PIC
mflr r0 mflr r0
cfi_register(lr,r0)
bl 1f bl 1f
1: mflr r6 1: mflr r6
addi r6,r6,L(exitcode)-1b addi r6,r6,L(exitcode)-1b
mtlr r0 mtlr r0
cfi_same_value (lr)
#else #else
lis r6,L(exitcode)@ha lis r6,L(exitcode)@ha
addi r6,r6,L(exitcode)@l addi r6,r6,L(exitcode)@l
@ -136,10 +138,12 @@ ENTRY(__novec_makecontext)
/* Set the function's LR to point to the exitcode below. */ /* Set the function's LR to point to the exitcode below. */
#ifdef PIC #ifdef PIC
mflr r0 mflr r0
cfi_register(lr,r0)
bl 1f bl 1f
1: mflr r6 1: mflr r6
addi r6,r6,L(novec_exitcode)-1b addi r6,r6,L(novec_exitcode)-1b
mtlr r0 mtlr r0
cfi_same_value (lr)
#else #else
lis r6,L(novec_exitcode)@ha lis r6,L(novec_exitcode)@ha
addi r6,r6,L(novec_exitcode)@l addi r6,r6,L(novec_exitcode)@l

View File

@ -1,5 +1,5 @@
/* Jump to a new context powerpc32 common. /* Jump to a new context powerpc32 common.
Copyright (C) 2005 Free Software Foundation, Inc. Copyright (C) 2005, 2006 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
@ -41,7 +41,9 @@
ENTRY(__CONTEXT_FUNC_NAME) ENTRY(__CONTEXT_FUNC_NAME)
mflr r0 mflr r0
stwu r1,-16(r1) stwu r1,-16(r1)
cfi_adjust_cfa_offset (16)
stw r0,20(r1) stw r0,20(r1)
cfi_offset (lr, _FRAME_LR_SAVE)
stw r31,12(r1) stw r31,12(r1)
lwz r31,_UC_REGS_PTR(r3) lwz r31,_UC_REGS_PTR(r3)

View File

@ -1,5 +1,5 @@
/* Save current context and jump to a new context. /* Save current context and jump to a new context.
Copyright (C) 2005 Free Software Foundation, Inc. Copyright (C) 2005, 2006 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
@ -40,6 +40,7 @@
#endif #endif
ENTRY(__CONTEXT_FUNC_NAME) ENTRY(__CONTEXT_FUNC_NAME)
stwu r1,-16(r1) stwu r1,-16(r1)
cfi_adjust_cfa_offset (16)
/* Insure that the _UC_REGS start on a quadword boundary. */ /* Insure that the _UC_REGS start on a quadword boundary. */
stw r3,_FRAME_PARM_SAVE1(r1) stw r3,_FRAME_PARM_SAVE1(r1)
addi r3,r3,_UC_REG_SPACE+12 addi r3,r3,_UC_REG_SPACE+12
@ -56,6 +57,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
stw r0,_UC_GREGS+(PT_LNK*4)(r3) stw r0,_UC_GREGS+(PT_LNK*4)(r3)
stw r0,_UC_GREGS+(PT_NIP*4)(r3) stw r0,_UC_GREGS+(PT_NIP*4)(r3)
stw r0,_FRAME_LR_SAVE+16(r1) stw r0,_FRAME_LR_SAVE+16(r1)
cfi_offset (lr, _FRAME_LR_SAVE)
stw r5,_UC_GREGS+(PT_R5*4)(r3) stw r5,_UC_GREGS+(PT_R5*4)(r3)
stw r6,_UC_GREGS+(PT_R6*4)(r3) stw r6,_UC_GREGS+(PT_R6*4)(r3)
stw r7,_UC_GREGS+(PT_R7*4)(r3) stw r7,_UC_GREGS+(PT_R7*4)(r3)
@ -309,13 +311,12 @@ ENTRY(__CONTEXT_FUNC_NAME)
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r7 mflr r7
# endif # endif
mtlr r8
# ifdef SHARED # ifdef SHARED
lwz r7,_rtld_global_ro@got(r7) lwz r7,_rtld_global_ro@got(r7)
mtlr r8
lwz r7,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r7) lwz r7,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r7)
# else # else
lwz r7,_dl_hwcap@got(r7) lwz r7,_dl_hwcap@got(r7)
mtlr r8
lwz r7,0(r7) lwz r7,0(r7)
# endif # endif
# else # else
@ -467,7 +468,6 @@ ENTRY(__CONTEXT_FUNC_NAME)
mtcr r5 mtcr r5
/* Restore the general registers */ /* Restore the general registers */
lwz r1,_UC_GREGS+(PT_R1*4)(r31)
lwz r3,_UC_GREGS+(PT_R3*4)(r31) lwz r3,_UC_GREGS+(PT_R3*4)(r31)
lwz r4,_UC_GREGS+(PT_R4*4)(r31) lwz r4,_UC_GREGS+(PT_R4*4)(r31)
lwz r5,_UC_GREGS+(PT_R5*4)(r31) lwz r5,_UC_GREGS+(PT_R5*4)(r31)
@ -496,6 +496,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
lwz r28,_UC_GREGS+(PT_R28*4)(r31) lwz r28,_UC_GREGS+(PT_R28*4)(r31)
lwz r29,_UC_GREGS+(PT_R29*4)(r31) lwz r29,_UC_GREGS+(PT_R29*4)(r31)
lwz r30,_UC_GREGS+(PT_R30*4)(r31) lwz r30,_UC_GREGS+(PT_R30*4)(r31)
lwz r1,_UC_GREGS+(PT_R1*4)(r31)
lwz r31,_UC_GREGS+(PT_R31*4)(r31) lwz r31,_UC_GREGS+(PT_R31*4)(r31)
bctr bctr

View File

@ -1,5 +1,5 @@
/* brk system call for Linux. PowerPC64 version. /* brk system call for Linux. PowerPC64 version.
Copyright (C) 1995,96,97,99, 2000, 2002 Free Software Foundation, Inc. Copyright (C) 1995,96,97,99, 2000,02, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#define _ERRNO_H 1 #define _ERRNO_H 1
@ -33,6 +33,7 @@ ENTRY (BP_SYM (__brk))
DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em. */ DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em. */
stdu r1,-64(r1) stdu r1,-64(r1)
cfi_adjust_cfa_offset (64)
std r3,48(r1) std r3,48(r1)
DO_CALL(SYS_ify(brk)) DO_CALL(SYS_ify(brk))
ld r6,48(r1) ld r6,48(r1)

View File

@ -1,5 +1,5 @@
/* Wrapper around clone system call. PowerPC64 version. /* Wrapper around clone system call. PowerPC64 version.
Copyright (C) 1997,98,99,2000,02, 2004 Free Software Foundation, Inc. Copyright (C) 1997,98,99,2000,02,04, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#define _ERRNO_H 1 #define _ERRNO_H 1
@ -48,6 +48,7 @@ ENTRY (BP_SYM (__clone))
/* Set up stack frame for parent. */ /* Set up stack frame for parent. */
stdu r1,-80(r1) stdu r1,-80(r1)
cfi_adjust_cfa_offset (80)
std r29,56(r1) std r29,56(r1)
std r30,64(r1) std r30,64(r1)
std r31,72(r1) std r31,72(r1)

View File

@ -1,5 +1,5 @@
/* Save current context. /* Save current context.
Copyright (C) 2002, 2004 Free Software Foundation, Inc. Copyright (C) 2002, 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#include <rtld-global-offsets.h> #include <rtld-global-offsets.h>
@ -37,9 +37,11 @@ ENTRY(__novec_getcontext)
mflr r0 mflr r0
std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3) std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3)
std r0,FRAME_LR_SAVE(r1) std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
std r0,(SIGCONTEXT_GP_REGS+(PT_LNK*8))(r3) std r0,(SIGCONTEXT_GP_REGS+(PT_LNK*8))(r3)
std r0,(SIGCONTEXT_GP_REGS+(PT_NIP*8))(r3) std r0,(SIGCONTEXT_GP_REGS+(PT_NIP*8))(r3)
stdu r1,-128(r1) stdu r1,-128(r1)
cfi_adjust_cfa_offset (128)
std r4,(SIGCONTEXT_GP_REGS+(PT_R4*8))(r3) std r4,(SIGCONTEXT_GP_REGS+(PT_R4*8))(r3)
std r5,(SIGCONTEXT_GP_REGS+(PT_R5*8))(r3) std r5,(SIGCONTEXT_GP_REGS+(PT_R5*8))(r3)
std r6,(SIGCONTEXT_GP_REGS+(PT_R6*8))(r3) std r6,(SIGCONTEXT_GP_REGS+(PT_R6*8))(r3)
@ -140,6 +142,7 @@ ENTRY(__novec_getcontext)
/* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */
mflr r0 mflr r0
std r0,FRAME_LR_SAVE(r1) std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
stdu r1,-128(r1) stdu r1,-128(r1)
li r3,ENOSYS li r3,ENOSYS
bl JUMPTARGET(__syscall_error) bl JUMPTARGET(__syscall_error)
@ -175,9 +178,11 @@ ENTRY(__getcontext)
mflr r0 mflr r0
std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3) std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3)
std r0,FRAME_LR_SAVE(r1) std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
std r0,(SIGCONTEXT_GP_REGS+(PT_LNK*8))(r3) std r0,(SIGCONTEXT_GP_REGS+(PT_LNK*8))(r3)
std r0,(SIGCONTEXT_GP_REGS+(PT_NIP*8))(r3) std r0,(SIGCONTEXT_GP_REGS+(PT_NIP*8))(r3)
stdu r1,-128(r1) stdu r1,-128(r1)
cfi_adjust_cfa_offset (128)
std r4,(SIGCONTEXT_GP_REGS+(PT_R4*8))(r3) std r4,(SIGCONTEXT_GP_REGS+(PT_R4*8))(r3)
std r5,(SIGCONTEXT_GP_REGS+(PT_R5*8))(r3) std r5,(SIGCONTEXT_GP_REGS+(PT_R5*8))(r3)
std r6,(SIGCONTEXT_GP_REGS+(PT_R6*8))(r3) std r6,(SIGCONTEXT_GP_REGS+(PT_R6*8))(r3)
@ -387,7 +392,9 @@ L(has_no_vec):
/* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */
mflr r0 mflr r0
std r0,FRAME_LR_SAVE(r1) std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
stdu r1,-128(r1) stdu r1,-128(r1)
cfi_adjust_cfa_offset (128)
li r3,ENOSYS li r3,ENOSYS
bl JUMPTARGET(__syscall_error) bl JUMPTARGET(__syscall_error)
nop nop

View File

@ -1,5 +1,5 @@
/* Create new context. /* Create new context.
Copyright (C) 2002, 2004 Free Software Foundation, Inc. Copyright (C) 2002, 2004, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#include "kernel-features.h" #include "kernel-features.h"
@ -41,7 +41,9 @@ ENTRY(__makecontext)
/* Get the address of the target functions first parameter. */ /* Get the address of the target functions first parameter. */
addi r6,r1,FRAME_PARM4_SAVE addi r6,r1,FRAME_PARM4_SAVE
std r0,FRAME_LR_SAVE(r1) std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
stdu r1,-128(r1) stdu r1,-128(r1)
cfi_adjust_cfa_offset (128)
/* Get the ucontexts stack pointer and size. Compute the top of stack /* Get the ucontexts stack pointer and size. Compute the top of stack
and round down to a quadword boundary. Then stack a dummy frame and round down to a quadword boundary. Then stack a dummy frame
@ -168,7 +170,9 @@ L(gotexitcodeaddr):
/* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */
mflr r0 mflr r0
std r0,FRAME_LR_SAVE(r1) std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
stdu r1,-128(r1) stdu r1,-128(r1)
cfi_adjust_cfa_offset (128)
li r3,ENOSYS li r3,ENOSYS
bl JUMPTARGET(__syscall_error) bl JUMPTARGET(__syscall_error)
nop nop

View File

@ -1,5 +1,5 @@
/* Switch to context. /* Switch to context.
Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 2002, 2004, 2005, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#include <rtld-global-offsets.h> #include <rtld-global-offsets.h>
@ -34,7 +34,9 @@ ENTRY(__novec_setcontext)
mflr r0 mflr r0
std r31,-8(1) std r31,-8(1)
std r0,FRAME_LR_SAVE(r1) std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
stdu r1,-128(r1) stdu r1,-128(r1)
cfi_adjust_cfa_offset (128)
mr r31,r3 mr r31,r3
/* /*
@ -200,7 +202,9 @@ ENTRY(__setcontext)
mflr r0 mflr r0
std r31,-8(1) std r31,-8(1)
std r0,FRAME_LR_SAVE(r1) std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
stdu r1,-128(r1) stdu r1,-128(r1)
cfi_adjust_cfa_offset (128)
mr r31,r3 mr r31,r3
/* /*
@ -443,7 +447,9 @@ L(do_sigret):
/* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */
mflr r0 mflr r0
std r0,FRAME_LR_SAVE(r1) std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
stdu r1,-128(r1) stdu r1,-128(r1)
cfi_adjust_cfa_offset (128)
li r3,ENOSYS li r3,ENOSYS
bl JUMPTARGET(__syscall_error) bl JUMPTARGET(__syscall_error)
nop nop

View File

@ -1,5 +1,5 @@
/* Save current context and install the given one. /* Save current context and install the given one.
Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 2002, 2004, 2005, 2006 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
@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
02111-1307 USA. */ 02110-1301 USA. */
#include <sysdep.h> #include <sysdep.h>
#include <rtld-global-offsets.h> #include <rtld-global-offsets.h>
@ -37,9 +37,11 @@ ENTRY(__novec_swapcontext)
std r31,-8(1) std r31,-8(1)
std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3) std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3)
std r0,FRAME_LR_SAVE(r1) std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
std r0,(SIGCONTEXT_GP_REGS+(PT_LNK*8))(r3) std r0,(SIGCONTEXT_GP_REGS+(PT_LNK*8))(r3)
std r0,(SIGCONTEXT_GP_REGS+(PT_NIP*8))(r3) std r0,(SIGCONTEXT_GP_REGS+(PT_NIP*8))(r3)
stdu r1,-128(r1) stdu r1,-128(r1)
cfi_adjust_cfa_offset (128)
std r4,(SIGCONTEXT_GP_REGS+(PT_R4*8))(r3) std r4,(SIGCONTEXT_GP_REGS+(PT_R4*8))(r3)
std r5,(SIGCONTEXT_GP_REGS+(PT_R5*8))(r3) std r5,(SIGCONTEXT_GP_REGS+(PT_R5*8))(r3)
std r6,(SIGCONTEXT_GP_REGS+(PT_R6*8))(r3) std r6,(SIGCONTEXT_GP_REGS+(PT_R6*8))(r3)
@ -744,7 +746,9 @@ L(do_sigret):
/* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */
mflr r0 mflr r0
std r0,FRAME_LR_SAVE(r1) std r0,FRAME_LR_SAVE(r1)
cfi_offset (lr, FRAME_LR_SAVE)
stdu r1,-128(r1) stdu r1,-128(r1)
cfi_adjust_cfa_offset (128)
li r3,ENOSYS li r3,ENOSYS
bl JUMPTARGET(__syscall_error) bl JUMPTARGET(__syscall_error)
nop nop