1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00

Simplify code for accessing powerpc GOT

This commit is contained in:
Will Schmidt
2011-12-17 15:07:31 -05:00
committed by Ulrich Drepper
parent a1267ba1c6
commit 91d2a8453f
32 changed files with 167 additions and 159 deletions

View File

@ -1,3 +1,37 @@
2011-11-21 Will Schmidt <will_schmidt@vnet.ibm.com>
* powerpc/powerpc32/sysdep.h: Define SETUP_GOT_ACCESS() macro.
* powerpc/powerpc32/a2/memcpy.S: Use SETUP_GOT_ACCESS() macro.
* powerpc/powerpc32/dl-start.S: Likewise.
* powerpc/powerpc32/elf/start.S: Likewise.
* powerpc/powerpc32/fpu/__longjmp-common.S: Likewise.
* powerpc/powerpc32/fpu/s_ceil.S: Likewise.
* powerpc/powerpc32/fpu/s_ceilf.S: Likewise.
* powerpc/powerpc32/fpu/s_floor.S: Likewise.
* powerpc/powerpc32/fpu/s_floorf.S: Likewise.
* powerpc/powerpc32/fpu/s_lround.S: Likewise.
* powerpc/powerpc32/fpu/s_rint.S: Likewise.
* powerpc/powerpc32/fpu/s_rintf.S: Likewise.
* powerpc/powerpc32/fpu/s_round.S: Likewise.
* powerpc/powerpc32/fpu/s_roundf.S: Likewise.
* powerpc/powerpc32/fpu/s_trunc.S: Likewise.
* powerpc/powerpc32/fpu/s_truncf.S: Likewise.
* powerpc/powerpc32/fpu/setjmp-common.S: Likewise.
* powerpc/powerpc32/memset.S: Likewise.
* powerpc/powerpc32/power4/fpu/s_llround.S: Likewise.
* powerpc/powerpc32/power4/fpu/w_sqrt.S: Likewise.
* powerpc/powerpc32/power4/fpu/w_sqrtf.S: Likewise.
* powerpc/powerpc32/power5/fpu/w_sqrt.S: Likewise.
* powerpc/powerpc32/power5/fpu/w_sqrtf.S: Likewise.
* powerpc/powerpc32/power7/fpu/s_finite.S: Likewise.
* powerpc/powerpc32/power7/fpu/s_isinf.S: Likewise.
* powerpc/powerpc32/power7/fpu/s_isnan.S: Likewise.
* unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S: Likewise.
* unix/sysv/linux/powerpc/powerpc32/brk.S: Likewise.
* unix/sysv/linux/powerpc/powerpc32/getcontext-common.S: Likewise.
* unix/sysv/linux/powerpc/powerpc32/setcontext-common.S: Likewise.
* unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S: Likewise.
2011-11-18 Adhemerval Zanella <azanella@linux.vnet.ibm.com> 2011-11-18 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* math/libm-test.inc: Added more nearbyint tests. * math/libm-test.inc: Added more nearbyint tests.

View File

@ -1,5 +1,5 @@
/* Optimized memcpy implementation for PowerPC A2. /* Optimized memcpy implementation for PowerPC A2.
Copyright (C) 2010 Free Software Foundation, Inc. Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Contributed by Michael Brutman <brutman@us.ibm.com>. Contributed by Michael Brutman <brutman@us.ibm.com>.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -113,11 +113,9 @@ L(dst_aligned):
mflr r0 mflr r0
/* Establishes GOT addressability so we can load __cache_line_size /* Establishes GOT addressability so we can load __cache_line_size
from static. This value was set from the aux vector during startup. */ from static. This value was set from the aux vector during startup. */
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: addis r9,r9,__cache_line_size-got_label@ha
mflr r9 lwz r9,__cache_line_size-got_label@l(r9)
addis r9,r9,__cache_line_size-1b@ha
lwz r9,__cache_line_size-1b@l(r9)
mtlr r0 mtlr r0
#else #else
/* Load __cache_line_size from static. This value was set from the /* Load __cache_line_size from static. This value was set from the

View File

@ -1,5 +1,6 @@
/* Machine-dependent ELF startup code. PowerPC version. /* Machine-dependent ELF startup code. PowerPC version.
Copyright (C) 1995-2000, 2002, 2004, 2005, 2006 Free Software Foundation, Inc. Copyright (C) 1995-2000, 2002, 2004, 2005, 2006, 2011
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
@ -47,10 +48,9 @@ _dl_start_user:
passed by value!). */ passed by value!). */
/* Put our GOT pointer in r31, */ /* Put our GOT pointer in r31, */
bcl 20,31,1f SETUP_GOT_ACCESS(r31,got_label)
1: mflr r31 addis r31,r31,_GLOBAL_OFFSET_TABLE_-got_label@ha
addis r31,r31,_GLOBAL_OFFSET_TABLE_-1b@ha addi r31,r31,_GLOBAL_OFFSET_TABLE_-got_label@l
addi r31,r31,_GLOBAL_OFFSET_TABLE_-1b@l
/* the address of _start in r30, */ /* the address of _start in r30, */
mr r30,r3 mr r30,r3
/* &_dl_argc in 29, &_dl_argv in 27, and _dl_loaded in 28. */ /* &_dl_argc in 29, &_dl_argv in 27, and _dl_loaded in 28. */

View File

@ -1,5 +1,5 @@
/* Startup code for programs linked with GNU libc. /* Startup code for programs linked with GNU libc.
Copyright (C) 1998,1999,2000,2001,2002,2003,2009 Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2009, 2011
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -59,10 +59,8 @@ ENTRY(_start)
/* Set up an initial stack frame, and clear the LR. */ /* Set up an initial stack frame, and clear the LR. */
clrrwi r1,r1,4 clrrwi r1,r1,4
#ifdef PIC #ifdef PIC
bcl 20,31,L(branch) SETUP_GOT_ACCESS(r13,got_label)
L(branch):
li r0,0 li r0,0
mflr r13
#else #else
li r0,0 li r0,0
#endif #endif
@ -73,10 +71,10 @@ L(branch):
start_addresses in r8. Also load the GOT pointer so that new PLT start_addresses in r8. Also load the GOT pointer so that new PLT
calls work, like the one to __libc_start_main. */ calls work, like the one to __libc_start_main. */
#ifdef PIC #ifdef PIC
addis r30,r13,_GLOBAL_OFFSET_TABLE_-L(branch)@ha addis r30,r13,_GLOBAL_OFFSET_TABLE_-got_label@ha
addis r8,r13,L(start_addresses)-L(branch)@ha addis r8,r13,L(start_addresses)-got_label@ha
addi r30,r30,_GLOBAL_OFFSET_TABLE_-L(branch)@l addi r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@l
lwzu r13,L(start_addresses)-L(branch)@l(r8) lwzu r13, L(start_addresses)-got_label@l(r8)
#else #else
lis r8,L(start_addresses)@ha lis r8,L(start_addresses)@ha
lwzu r13,L(start_addresses)@l(r8) lwzu r13,L(start_addresses)@l(r8)

View File

@ -1,5 +1,6 @@
/* longjmp for PowerPC. /* longjmp for PowerPC.
Copyright (C) 1995-99, 2000, 2003-2006, 2009 Free Software Foundation, Inc. Copyright (C) 1995-99, 2000, 2003-2006, 2009, 2011
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
@ -34,10 +35,9 @@ ENTRY (BP_SYM (__longjmp))
# ifdef PIC # ifdef PIC
mflr r6 mflr r6
cfi_register (lr,r6) cfi_register (lr,r6)
bcl 20,31,1f SETUP_GOT_ACCESS(r5,got_label)
1: mflr r5 addis r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@ha
addis r5,r5,_GLOBAL_OFFSET_TABLE_-1b@ha addi r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@l
addi r5,r5,_GLOBAL_OFFSET_TABLE_-1b@l
# ifdef SHARED # ifdef SHARED
lwz r5,_rtld_global_ro@got(r5) lwz r5,_rtld_global_ro@got(r5)
mtlr r6 mtlr r6

View File

@ -1,5 +1,5 @@
/* ceil function. PowerPC32 version. /* ceil function. PowerPC32 version.
Copyright (C) 2004, 2006 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2011 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
@ -31,10 +31,9 @@ ENTRY (__ceil)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfs fp13,.LC0-got_label@l(r9)
lfs fp13,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
#else #else

View File

@ -1,5 +1,5 @@
/* float ceil function. PowerPC32 version. /* float ceil function. PowerPC32 version.
Copyright (C) 2004, 2006 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2011 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
@ -30,10 +30,9 @@ ENTRY (__ceilf)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfs fp13,.LC0-got_label@l(r9)
lfs fp13,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
#else #else

View File

@ -1,5 +1,5 @@
/* Floor function. PowerPC32 version. /* Floor function. PowerPC32 version.
Copyright (C) 2004, 2006 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2011 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
@ -31,10 +31,9 @@ ENTRY (__floor)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfs fp13,.LC0-got_label@l(r9)
lfs fp13,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
#else #else

View File

@ -1,5 +1,5 @@
/* float Floor function. PowerPC32 version. /* float Floor function. PowerPC32 version.
Copyright (C) 2004, 2006 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2011 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
@ -30,10 +30,9 @@ ENTRY (__floorf)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfs fp13,.LC0-got_label@l(r9)
lfs fp13,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
#else #else

View File

@ -1,5 +1,5 @@
/* lround function. PowerPC32 version. /* lround function. PowerPC32 version.
Copyright (C) 2004, 2006, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2007, 2008, 2011 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
@ -45,10 +45,9 @@ ENTRY (__lround)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfs fp10,.LC0-got_label@l(r9)
lfs fp10,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
#else #else

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, 2006 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2011 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
@ -33,10 +33,9 @@ ENTRY (__rint)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfs fp13,.LC0-got_label@l(r9)
lfs fp13,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
#else #else

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, 2006 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2011 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
@ -29,10 +29,9 @@ ENTRY (__rintf)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfs fp13,.LC0-got_label@l(r9)
lfs fp13,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
#else #else

View File

@ -1,5 +1,5 @@
/* round function. PowerPC32 version. /* round function. PowerPC32 version.
Copyright (C) 2004, 2006 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2011 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
@ -43,10 +43,9 @@ ENTRY (__round)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha addi r9,r9,.LC0-got_label@l
addi r9,r9,.LC0-1b@l
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
lfs fp13,0(r9) lfs fp13,0(r9)

View File

@ -1,5 +1,5 @@
/* roundf function. PowerPC32 version. /* roundf function. PowerPC32 version.
Copyright (C) 2004, 2006 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2011 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
@ -42,10 +42,9 @@ ENTRY (__roundf )
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha addi r9,r9,.LC0-got_label@l
addi r9,r9,.LC0-1b@l
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
lfs fp13,0(r9) lfs fp13,0(r9)

View File

@ -1,5 +1,5 @@
/* trunc function. PowerPC32 version. /* trunc function. PowerPC32 version.
Copyright (C) 2004, 2006 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2011 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
@ -38,10 +38,9 @@ ENTRY (__trunc)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfs fp13,.LC0-got_label@l(r9)
lfs fp13,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
#else #else

View File

@ -1,5 +1,5 @@
/* truncf function. PowerPC32 version. /* truncf function. PowerPC32 version.
Copyright (C) 2004, 2006 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2011 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
@ -37,10 +37,9 @@ ENTRY (__truncf)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfs fp13,.LC0-got_label@l(r9)
lfs fp13,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
#else #else

View File

@ -1,5 +1,5 @@
/* setjmp for PowerPC. /* setjmp for PowerPC.
Copyright (C) 1995-2000, 2003-2005, 2006 Free Software Foundation, Inc. Copyright (C) 1995-2000, 2003-2005, 2006, 2011 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
@ -85,10 +85,9 @@ ENTRY (BP_SYM (__sigsetjmp))
# ifdef PIC # ifdef PIC
mflr r6 mflr r6
cfi_register(lr,r6) cfi_register(lr,r6)
bcl 20,31,1f SETUP_GOT_ACCESS(r5,got_label)
1: mflr r5 addis r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@ha
addis r5,r5,_GLOBAL_OFFSET_TABLE_-1b@ha addi r5,r5,_GLOBAL_OFFSET_TABLE_-got_label@l
addi r5,r5,_GLOBAL_OFFSET_TABLE_-1b@l
mtlr r6 mtlr r6
cfi_same_value (lr) cfi_same_value (lr)
# ifdef SHARED # ifdef SHARED

View File

@ -1,5 +1,6 @@
/* Optimized memset implementation for PowerPC. /* Optimized memset implementation for PowerPC.
Copyright (C) 1997, 1999, 2000, 2003, 2007 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2000, 2003, 2007, 2011
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
@ -256,10 +257,9 @@ L(checklinesize):
beq L(medium) beq L(medium)
/* Establishes GOT addressability so we can load __cache_line_size /* Establishes GOT addressability so we can load __cache_line_size
from static. This value was set from the aux vector during startup. */ from static. This value was set from the aux vector during startup. */
bcl 20,31,1f SETUP_GOT_ACCESS(rGOT,got_label)
1: mflr rGOT addis rGOT,rGOT,__cache_line_size-got_label@ha
addis rGOT,rGOT,__cache_line_size-1b@ha lwz rCLS,__cache_line_size-got_label@l(rGOT)
lwz rCLS,__cache_line_size-1b@l(rGOT)
mtlr rTMP mtlr rTMP
#else #else
/* Load __cache_line_size from static. This value was set from the /* Load __cache_line_size from static. This value was set from the

View File

@ -1,5 +1,5 @@
/* llround function. PowerPC32 on PowerPC64 version. /* llround function. PowerPC32 on PowerPC64 version.
Copyright (C) 2004, 2006, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2007, 2008, 2011 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
@ -53,10 +53,9 @@ ENTRY (__llround)
#ifdef SHARED #ifdef SHARED
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha addi r9,r9,.LC0-got_label@l
addi r9,r9,.LC0-1b@l
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)
lfd fp9,0(r9) lfd fp9,0(r9)

View File

@ -63,11 +63,9 @@ EALIGN (__sqrt, 5, 0)
cfi_offset(lr,20-16) cfi_offset(lr,20-16)
cfi_offset(r30,8-16) cfi_offset(r30,8-16)
#ifdef SHARED #ifdef SHARED
bcl 20,31,.LCF1 SETUP_GOT_ACCESS(r30,got_label)
.LCF1: addis r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@ha
mflr r30 addi r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@l
addis r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@ha
addi r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@l
lwz r9,_LIB_VERSION@got(30) lwz r9,_LIB_VERSION@got(30)
lwz r0,0(r9) lwz r0,0(r9)
#else #else

View File

@ -63,11 +63,9 @@ EALIGN (__sqrtf, 5, 0)
cfi_offset(lr,20-16) cfi_offset(lr,20-16)
cfi_offset(r30,8-16) cfi_offset(r30,8-16)
#ifdef SHARED #ifdef SHARED
bcl 20,31,.LCF1 SETUP_GOT_ACCESS(r30,got_label)
.LCF1: addis r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@ha
mflr r30 addi r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@l
addis r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@ha
addi r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@l
lwz r9,_LIB_VERSION@got(30) lwz r9,_LIB_VERSION@got(30)
lwz r0,0(r9) lwz r0,0(r9)
#else #else

View File

@ -63,11 +63,9 @@ EALIGN (__sqrt, 5, 0)
cfi_offset(lr,20-16) cfi_offset(lr,20-16)
cfi_offset(r30,8-16) cfi_offset(r30,8-16)
#ifdef SHARED #ifdef SHARED
bcl 20,31,.LCF1 SETUP_GOT_ACCESS(r30,got_label)
.LCF1: addis r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@ha
mflr r30 addi r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@l
addis r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@ha
addi r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@l
lwz r9,_LIB_VERSION@got(30) lwz r9,_LIB_VERSION@got(30)
lwz r0,0(r9) lwz r0,0(r9)
#else #else

View File

@ -63,11 +63,9 @@ EALIGN (__sqrtf, 5, 0)
cfi_offset(lr,20-16) cfi_offset(lr,20-16)
cfi_offset(r30,8-16) cfi_offset(r30,8-16)
#ifdef SHARED #ifdef SHARED
bcl 20,31,.LCF1 SETUP_GOT_ACCESS(r30,got_label)
.LCF1: addis r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@ha
mflr r30 addi r30,r30,_GLOBAL_OFFSET_TABLE_-got_label@l
addis r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@ha
addi r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@l
lwz r9,_LIB_VERSION@got(30) lwz r9,_LIB_VERSION@got(30)
lwz r0,0(r9) lwz r0,0(r9)
#else #else

View File

@ -1,5 +1,5 @@
/* finite(). PowerPC32/POWER7 version. /* finite(). PowerPC32/POWER7 version.
Copyright (C) 2010 Free Software Foundation, Inc. Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Contributed by Luis Machado <luisgpm@br.ibm.com>. Contributed by Luis Machado <luisgpm@br.ibm.com>.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -35,10 +35,9 @@ ENTRY (__finite)
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfd fp0,.LC0-got_label@l(r9)
lfd fp0,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)

View File

@ -1,5 +1,5 @@
/* isinf(). PowerPC32/POWER7 version. /* isinf(). PowerPC32/POWER7 version.
Copyright (C) 2010 Free Software Foundation, Inc. Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Contributed by Luis Machado <luisgpm@br.ibm.com>. Contributed by Luis Machado <luisgpm@br.ibm.com>.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -35,10 +35,9 @@ ENTRY (__isinf)
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfd fp0,.LC0-got_label@l(r9)
lfd fp0,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)

View File

@ -1,5 +1,5 @@
/* isnan(). PowerPC32/POWER7 version. /* isnan(). PowerPC32/POWER7 version.
Copyright (C) 2010 Free Software Foundation, Inc. Copyright (C) 2010, 2011 Free Software Foundation, Inc.
Contributed by Luis Machado <luisgpm@br.ibm.com>. Contributed by Luis Machado <luisgpm@br.ibm.com>.
This file is part of the GNU C Library. This file is part of the GNU C Library.
@ -35,10 +35,9 @@ ENTRY (__isnan)
mflr r11 mflr r11
cfi_register(lr,r11) cfi_register(lr,r11)
bcl 20,31,1f SETUP_GOT_ACCESS(r9,got_label)
1: mflr r9 addis r9,r9,.LC0-got_label@ha
addis r9,r9,.LC0-1b@ha lfd fp0,.LC0-got_label@l(r9)
lfd fp0,.LC0-1b@l(r9)
mtlr r11 mtlr r11
cfi_same_value (lr) cfi_same_value (lr)

View File

@ -1,5 +1,6 @@
/* Assembly macros for 32-bit PowerPC. /* Assembly macros for 32-bit PowerPC.
Copyright (C) 1999, 2001, 2002, 2003, 2006 Free Software Foundation, Inc. Copyright (C) 1999, 2001, 2002, 2003, 2006, 2011
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
@ -46,6 +47,13 @@
cfi_startproc; \ cfi_startproc; \
CALL_MCOUNT CALL_MCOUNT
/* helper macro for accessing the 32-bit powerpc GOT. */
#define SETUP_GOT_ACCESS(regname,GOT_LABEL) \
bcl 20,31,GOT_LABEL ; \
GOT_LABEL: ; \
mflr (regname)
#define EALIGN_W_0 /* No words to insert. */ #define EALIGN_W_0 /* No words to insert. */
#define EALIGN_W_1 nop #define EALIGN_W_1 nop
#define EALIGN_W_2 nop;nop #define EALIGN_W_2 nop;nop

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2009 Free Software Foundation, Inc. /* Copyright (C) 2009, 2011 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
@ -29,10 +29,9 @@
#ifdef PIC #ifdef PIC
# define LOAD_ARG \ # define LOAD_ARG \
bcl 20,31,1f; \ SETUP_GOT_ACCESS(r3,got_label2); \
1: mflr r3; \ addis r3,r3,_GLOBAL_OFFSET_TABLE_-got_label2@ha; \
addis r3,r3,_GLOBAL_OFFSET_TABLE_-1b@ha; \ addi r3,r3,_GLOBAL_OFFSET_TABLE_-got_label2@l; \
addi r3,r3,_GLOBAL_OFFSET_TABLE_-1b@l; \
lwz r3,.LC0@got(r3) lwz r3,.LC0@got(r3)
#else #else
# define LOAD_ARG \ # define LOAD_ARG \

View File

@ -1,5 +1,5 @@
/* brk system call for Linux/ppc. /* brk system call for Linux/ppc.
Copyright (C) 1995-97, 1999, 2000, 2006 Free Software Foundation, Inc. Copyright (C) 1995-97, 1999, 2000, 2006, 2011 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
@ -36,10 +36,9 @@ ENTRY (BP_SYM (__brk))
DO_CALL(SYS_ify(brk)) DO_CALL(SYS_ify(brk))
lwz r6,8(r1) lwz r6,8(r1)
#ifdef PIC #ifdef PIC
bcl 20,31,1f SETUP_GOT_ACCESS(r5,got_label)
1: mflr r5 addis r5,r5,__curbrk-got_label@ha
addis r5,r5,__curbrk-1b@ha stw r3,__curbrk-got_label@l(r5)
stw r3,__curbrk-1b@l(r5)
#else #else
lis r4,__curbrk@ha lis r4,__curbrk@ha
stw r3,__curbrk@l(r4) stw r3,__curbrk@l(r4)

View File

@ -1,5 +1,5 @@
/* Save current context, powerpc32 common. /* Save current context, powerpc32 common.
Copyright (C) 2005, 2006 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2011 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
@ -145,10 +145,9 @@ ENTRY(__CONTEXT_FUNC_NAME)
# ifdef __CONTEXT_ENABLE_VRS # ifdef __CONTEXT_ENABLE_VRS
# ifdef PIC # ifdef PIC
mflr r8 mflr r8
bcl 20,31,1f SETUP_GOT_ACCESS(r7,got_label)
1: mflr r7 addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha
addis r7,r7,_GLOBAL_OFFSET_TABLE_-1b@ha addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l
addi r7,r7,_GLOBAL_OFFSET_TABLE_-1b@l
# ifdef SHARED # ifdef SHARED
lwz r7,_rtld_global_ro@got(r7) lwz r7,_rtld_global_ro@got(r7)
mtlr r8 mtlr r8

View File

@ -1,5 +1,5 @@
/* Jump to a new context powerpc32 common. /* Jump to a new context powerpc32 common.
Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2008, 2009, 2011 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
@ -73,10 +73,9 @@ ENTRY(__CONTEXT_FUNC_NAME)
#ifdef PIC #ifdef PIC
mflr r8 mflr r8
bcl 20,31,1f SETUP_GOT_ACCESS(r7,got_label)
1: mflr r7 addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha
addis r7,r7,_GLOBAL_OFFSET_TABLE_-1b@ha addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l
addi r7,r7,_GLOBAL_OFFSET_TABLE_-1b@l
# ifdef SHARED # ifdef SHARED
lwz r7,_rtld_global_ro@got(r7) lwz r7,_rtld_global_ro@got(r7)
mtlr r8 mtlr r8

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, 2006, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2008, 2009, 2011 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
@ -146,10 +146,9 @@ ENTRY(__CONTEXT_FUNC_NAME)
# ifdef PIC # ifdef PIC
mflr r8 mflr r8
bcl 20,31,1f SETUP_GOT_ACCESS(r7,got_label)
1: mflr r7 addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha
addis r7,r7,_GLOBAL_OFFSET_TABLE_-1b@ha addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l
addi r7,r7,_GLOBAL_OFFSET_TABLE_-1b@l
# ifdef SHARED # ifdef SHARED
lwz r7,_rtld_global_ro@got(r7) lwz r7,_rtld_global_ro@got(r7)
mtlr r8 mtlr r8
@ -299,10 +298,9 @@ ENTRY(__CONTEXT_FUNC_NAME)
# ifdef PIC # ifdef PIC
mflr r8 mflr r8
# ifdef HAVE_ASM_PPC_REL16 # ifdef HAVE_ASM_PPC_REL16
bcl 20,31,5f SETUP_GOT_ACCESS(r7,got_label)
5: mflr r7 addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha
addis r7,r7,_GLOBAL_OFFSET_TABLE_-5b@ha addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l
addi r7,r7,_GLOBAL_OFFSET_TABLE_-5b@l
# else # else
bl _GLOBAL_OFFSET_TABLE_@local-4 bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r7 mflr r7