mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00:00
* 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:
parent
ae4ad00acb
commit
a7e915610a
65
ChangeLog
65
ChangeLog
@ -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>
|
||||
|
||||
* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Include tls.h.
|
||||
|
@ -11,8 +11,8 @@ static int
|
||||
do_test (void)
|
||||
{
|
||||
#ifdef USE_TLS
|
||||
static const char modname1[] = "tst-tlsmod3.so";
|
||||
static const char modname2[] = "tst-tlsmod4.so";
|
||||
static const char modname1[] = "$ORIGIN/tst-tlsmod3.so";
|
||||
static const char modname2[] = "$ORIGIN/tst-tlsmod4.so";
|
||||
int result = 0;
|
||||
int (*fp1) (void);
|
||||
int (*fp2) (int, int *);
|
||||
|
@ -60,6 +60,7 @@
|
||||
# define cfi_register(r1, r2) .cfi_register r1, r2
|
||||
# define cfi_return_column(reg) .cfi_return_column 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_remember_state .cfi_remember_state
|
||||
# define cfi_restore_state .cfi_restore_state
|
||||
@ -76,6 +77,7 @@
|
||||
# define cfi_register(r1, r2)
|
||||
# define cfi_return_column(reg)
|
||||
# define cfi_restore(reg)
|
||||
# define cfi_same_value(reg)
|
||||
# define cfi_undefined(reg)
|
||||
# define cfi_remember_state
|
||||
# define cfi_restore_state
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
@ -24,9 +24,11 @@
|
||||
.globl _dl_runtime_resolve
|
||||
.type _dl_runtime_resolve,@function
|
||||
_dl_runtime_resolve:
|
||||
cfi_startproc
|
||||
# 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.
|
||||
stwu r1,-64(r1)
|
||||
cfi_adjust_cfa_offset (64)
|
||||
stw r0,12(r1)
|
||||
stw r3,16(r1)
|
||||
stw r4,20(r1)
|
||||
@ -38,7 +40,8 @@ _dl_runtime_resolve:
|
||||
mflr r0
|
||||
# We also need to save some of the condition register fields
|
||||
stw r7,32(r1)
|
||||
stw r0,48(r1)
|
||||
stw r0,68(r1)
|
||||
cfi_offset (lr, 4)
|
||||
stw r8,36(r1)
|
||||
mfcr r0
|
||||
stw r9,40(r1)
|
||||
@ -48,7 +51,7 @@ _dl_runtime_resolve:
|
||||
# 'fixup' returns the address we want to branch to.
|
||||
mtctr r3
|
||||
# Put the registers back...
|
||||
lwz r0,48(r1)
|
||||
lwz r0,68(r1)
|
||||
lwz r10,44(r1)
|
||||
lwz r9,40(r1)
|
||||
mtlr r0
|
||||
@ -64,6 +67,7 @@ _dl_runtime_resolve:
|
||||
# ...unwind the stack frame, and jump to the PLT entry we updated.
|
||||
addi r1,r1,64
|
||||
bctr
|
||||
cfi_endproc
|
||||
.size _dl_runtime_resolve,.-_dl_runtime_resolve
|
||||
|
||||
#ifndef PROF
|
||||
@ -71,9 +75,11 @@ _dl_runtime_resolve:
|
||||
.globl _dl_prof_resolve
|
||||
.type _dl_prof_resolve,@function
|
||||
_dl_prof_resolve:
|
||||
cfi_startproc
|
||||
# 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.
|
||||
stwu r1,-320(r1)
|
||||
cfi_adjust_cfa_offset (320)
|
||||
/* Stack layout:
|
||||
|
||||
+312 stackframe
|
||||
@ -122,7 +128,8 @@ _dl_prof_resolve:
|
||||
mflr r5
|
||||
# We also need to save some of the condition register fields.
|
||||
stw r7,32(r1)
|
||||
stw r5,308(r1)
|
||||
stw r5,324(r1)
|
||||
cfi_offset (lr, 4)
|
||||
stw r8,36(r1)
|
||||
mfcr r0
|
||||
stw r9,40(r1)
|
||||
@ -147,7 +154,7 @@ _dl_prof_resolve:
|
||||
# 'fixup' returns the address we want to branch to.
|
||||
mtctr r3
|
||||
# Put the registers back...
|
||||
lwz r0,308(r1)
|
||||
lwz r0,324(r1)
|
||||
lwz r10,44(r1)
|
||||
lwz r9,40(r1)
|
||||
mtlr r0
|
||||
@ -172,5 +179,6 @@ _dl_prof_resolve:
|
||||
# ...unwind the stack frame, and jump to the PLT entry we updated.
|
||||
addi r1,r1,320
|
||||
bctr
|
||||
cfi_endproc
|
||||
.size _dl_prof_resolve,.-_dl_prof_resolve
|
||||
#endif
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ASM
|
||||
@ -34,6 +34,7 @@ ENTRY (BP_SYM (__longjmp))
|
||||
#ifndef __NO_VMX__
|
||||
# ifdef PIC
|
||||
mflr r6
|
||||
cfi_register (lr,r6)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r5
|
||||
@ -46,10 +47,12 @@ ENTRY (BP_SYM (__longjmp))
|
||||
# ifdef SHARED
|
||||
lwz r5,_rtld_global_ro@got(r5)
|
||||
mtlr r6
|
||||
cfi_same_value (lr)
|
||||
lwz r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r5)
|
||||
# else
|
||||
lwz r5,_dl_hwcap@got(r5)
|
||||
mtlr r6
|
||||
cfi_same_value (lr)
|
||||
lwz r5,0(r5)
|
||||
# endif
|
||||
# else
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
@ -29,19 +29,20 @@ ENTRY (__ceil)
|
||||
mffs fp11 /* Save current FPU rounding mode. */
|
||||
#ifdef SHARED
|
||||
mflr r11
|
||||
cfi_register(lr,r11)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r9
|
||||
addis r9,r9,.LC0-1b@ha
|
||||
mtlr r11
|
||||
lfs fp13,.LC0-1b@l(r9)
|
||||
# else
|
||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||
mflr r10
|
||||
lwz r9,.LC0@got(10)
|
||||
mtlr r11
|
||||
lfs fp13,0(r9)
|
||||
# endif
|
||||
mtlr r11
|
||||
cfi_same_value (lr)
|
||||
#else
|
||||
lis r9,.LC0@ha
|
||||
lfs fp13,.LC0@l(r9)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
@ -29,19 +29,20 @@ ENTRY (__ceilf)
|
||||
mffs fp11 /* Save current FPU rounding mode. */
|
||||
#ifdef SHARED
|
||||
mflr r11
|
||||
cfi_register(lr,r11)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r9
|
||||
addis r9,r9,.LC0-1b@ha
|
||||
mtlr r11
|
||||
lfs fp13,.LC0-1b@l(r9)
|
||||
# else
|
||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||
mflr r10
|
||||
lwz r9,.LC0@got(10)
|
||||
mtlr r11
|
||||
lfs fp13,0(r9)
|
||||
# endif
|
||||
mtlr r11
|
||||
cfi_same_value (lr)
|
||||
#else
|
||||
lis r9,.LC0@ha
|
||||
lfs fp13,.LC0@l(r9)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
/* This has been coded in assembler because GCC makes such a mess of it
|
||||
when it's coded in C. */
|
||||
@ -27,6 +27,7 @@ ENTRY(__copysign)
|
||||
copysign(x,y) returns a value with the magnitude of x and
|
||||
with the sign bit of y. */
|
||||
stwu r1,-16(r1)
|
||||
cfi_adjust_cfa_offset (16)
|
||||
stfd fp2,8(r1)
|
||||
lwz r3,8(r1)
|
||||
cmpwi r3,0
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
@ -29,19 +29,20 @@ ENTRY (__floor)
|
||||
mffs fp11 /* Save current FPU rounding mode. */
|
||||
#ifdef SHARED
|
||||
mflr r11
|
||||
cfi_register(lr,r11)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r9
|
||||
addis r9,r9,.LC0-1b@ha
|
||||
mtlr r11
|
||||
lfs fp13,.LC0-1b@l(r9)
|
||||
# else
|
||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||
mflr r10
|
||||
lwz r9,.LC0@got(10)
|
||||
mtlr r11
|
||||
lfs fp13,0(r9)
|
||||
# endif
|
||||
mtlr r11
|
||||
cfi_same_value (lr)
|
||||
#else
|
||||
lis r9,.LC0@ha
|
||||
lfs fp13,.LC0@l(r9)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
@ -29,19 +29,20 @@ ENTRY (__floorf)
|
||||
mffs fp11 /* Save current FPU rounding mode. */
|
||||
#ifdef SHARED
|
||||
mflr r11
|
||||
cfi_register(lr,r11)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r9
|
||||
addis r9,r9,.LC0-1b@ha
|
||||
mtlr r11
|
||||
lfs fp13,.LC0-1b@l(r9)
|
||||
# else
|
||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||
mflr r10
|
||||
lwz r9,.LC0@got(10)
|
||||
mtlr r11
|
||||
lfs fp13,0(r9)
|
||||
# endif
|
||||
mtlr r11
|
||||
cfi_same_value (lr)
|
||||
#else
|
||||
lis r9,.LC0@ha
|
||||
lfs fp13,.LC0@l(r9)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
@ -39,8 +39,11 @@
|
||||
to the integer value. */
|
||||
|
||||
ENTRY (__lround)
|
||||
stwu r1,-16(r1)
|
||||
cfi_adjust_cfa_offset (16)
|
||||
#ifdef SHARED
|
||||
mflr r11
|
||||
cfi_register(lr,r11)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r9
|
||||
@ -52,6 +55,7 @@ ENTRY (__lround)
|
||||
lwz r9,.LC0@got(10)
|
||||
# endif
|
||||
mtlr r11
|
||||
cfi_same_value (lr)
|
||||
lfs fp12,0(r9)
|
||||
#else
|
||||
lis r9,.LC0@ha
|
||||
@ -68,11 +72,12 @@ ENTRY (__lround)
|
||||
fadd fp1,fp1,fp10 /* x+= 0.5; */
|
||||
.L9:
|
||||
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 /* group to avoid pipe stall on POWER4&5. */
|
||||
nop
|
||||
lwz r3,-4(r1)
|
||||
lwz r3,12(r1)
|
||||
addi r1,r1,16
|
||||
blr
|
||||
.L4:
|
||||
fsub fp1,fp1,fp10 /* x-= 0.5; */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
/* This has been coded in assembler because GCC makes such a mess of it
|
||||
when it's coded in C. */
|
||||
@ -31,19 +31,20 @@
|
||||
ENTRY (__rint)
|
||||
#ifdef SHARED
|
||||
mflr r11
|
||||
cfi_register(lr,r11)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r9
|
||||
addis r9,r9,.LC0-1b@ha
|
||||
mtlr r11
|
||||
lfs fp13,.LC0-1b@l(r9)
|
||||
# else
|
||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||
mflr r10
|
||||
lwz r9,.LC0@got(10)
|
||||
mtlr r11
|
||||
lfs fp13,0(r9)
|
||||
# endif
|
||||
mtlr r11
|
||||
cfi_same_value (lr)
|
||||
#else
|
||||
lis r9,.LC0@ha
|
||||
lfs fp13,.LC0@l(r9)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
@ -28,19 +28,20 @@
|
||||
ENTRY (__rintf)
|
||||
#ifdef SHARED
|
||||
mflr r11
|
||||
cfi_register(lr,r11)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r9
|
||||
addis r9,r9,.LC0-1b@ha
|
||||
mtlr r11
|
||||
lfs fp13,.LC0-1b@l(r9)
|
||||
# else
|
||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||
mflr r10
|
||||
lwz r9,.LC0@got(10)
|
||||
mtlr r11
|
||||
lfs fp13,0(r9)
|
||||
# endif
|
||||
mtlr r11
|
||||
cfi_same_value (lr)
|
||||
#else
|
||||
lis r9,.LC0@ha
|
||||
lfs fp13,.LC0@l(r9)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
@ -41,6 +41,7 @@ ENTRY (__round)
|
||||
mffs fp11 /* Save current FPU rounding mode. */
|
||||
#ifdef SHARED
|
||||
mflr r11
|
||||
cfi_register(lr,r11)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r9
|
||||
@ -52,6 +53,7 @@ ENTRY (__round)
|
||||
lwz r9,.LC0@got(10)
|
||||
# endif
|
||||
mtlr r11
|
||||
cfi_same_value (lr)
|
||||
lfs fp13,0(r9)
|
||||
#else
|
||||
lis r9,.LC0@ha
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
@ -41,6 +41,7 @@ ENTRY (__roundf )
|
||||
mffs fp11 /* Save current FPU rounding mode. */
|
||||
#ifdef SHARED
|
||||
mflr r11
|
||||
cfi_register(lr,r11)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r9
|
||||
@ -52,6 +53,7 @@ ENTRY (__roundf )
|
||||
lwz r9,.LC0@got(10)
|
||||
# endif
|
||||
mtlr r11
|
||||
cfi_same_value (lr)
|
||||
lfs fp13,0(r9)
|
||||
#else
|
||||
lis r9,.LC0@ha
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
@ -36,19 +36,20 @@ ENTRY (__trunc)
|
||||
mffs fp11 /* Save current FPU rounding mode. */
|
||||
#ifdef SHARED
|
||||
mflr r11
|
||||
cfi_register(lr,r11)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r9
|
||||
addis r9,r9,.LC0-1b@ha
|
||||
mtlr r11
|
||||
lfs fp13,.LC0-1b@l(r9)
|
||||
# else
|
||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||
mflr r10
|
||||
lwz r9,.LC0@got(10)
|
||||
mtlr r11
|
||||
lfs fp13,0(r9)
|
||||
# endif
|
||||
mtlr r11
|
||||
cfi_same_value (lr)
|
||||
#else
|
||||
lis r9,.LC0@ha
|
||||
lfs fp13,.LC0@l(r9)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
@ -36,19 +36,20 @@ ENTRY (__truncf)
|
||||
mffs fp11 /* Save current FPU rounding mode. */
|
||||
#ifdef SHARED
|
||||
mflr r11
|
||||
cfi_register(lr,r11)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r9
|
||||
addis r9,r9,.LC0-1b@ha
|
||||
mtlr r11
|
||||
lfs fp13,.LC0-1b@l(r9)
|
||||
# else
|
||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||
mflr r10
|
||||
lwz r9,.LC0@got(10)
|
||||
mtlr r11
|
||||
lfs fp13,0(r9)
|
||||
# endif
|
||||
mtlr r11
|
||||
cfi_same_value (lr)
|
||||
#else
|
||||
lis r9,.LC0@ha
|
||||
lfs fp13,.LC0@l(r9)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ASM
|
||||
@ -85,6 +85,7 @@ ENTRY (BP_SYM (__sigsetjmp))
|
||||
#ifndef __NO_VMX__
|
||||
# ifdef PIC
|
||||
mflr r6
|
||||
cfi_register(lr,r6)
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r5
|
||||
@ -94,13 +95,13 @@ ENTRY (BP_SYM (__sigsetjmp))
|
||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||
mflr r5
|
||||
# endif
|
||||
mtlr r6
|
||||
cfi_same_value (lr)
|
||||
# ifdef SHARED
|
||||
lwz r5,_rtld_global_ro@got(r5)
|
||||
mtlr r6
|
||||
lwz r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r5)
|
||||
# else
|
||||
lwz r5,_dl_hwcap@got(r5)
|
||||
mtlr r6
|
||||
lwz r5,0(r5)
|
||||
# endif
|
||||
# else
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.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,
|
||||
of size 4*12 bytes. We have to do this (or something) to make this PIC. */
|
||||
L(big): mflr r9
|
||||
cfi_register(lr,r9)
|
||||
bltl- cr0,L(boom) # Never taken, only used to set LR.
|
||||
slwi r10,r6,4
|
||||
mflr r12
|
||||
@ -75,7 +76,8 @@ L(big): mflr r9
|
||||
add r10,r8,r10
|
||||
mtctr r10
|
||||
addi r5,r5,-1
|
||||
mtlr r9
|
||||
mtlr r9
|
||||
cfi_same_value (lr)
|
||||
bctr
|
||||
|
||||
L(end2):slw r0,r10,r6
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
/* This would be bad. */
|
||||
#ifdef PROF
|
||||
@ -42,6 +42,7 @@
|
||||
|
||||
ENTRY(_mcount)
|
||||
stwu r1,-48(r1)
|
||||
cfi_adjust_cfa_offset (48)
|
||||
/* We need to save the parameter-passing registers. */
|
||||
stw r3, 12(r1)
|
||||
stw r4, 16(r1)
|
||||
@ -55,6 +56,7 @@ ENTRY(_mcount)
|
||||
stw r9, 36(r1)
|
||||
stw r10,40(r1)
|
||||
stw r4, 44(r1)
|
||||
cfi_offset (lr, -4)
|
||||
stw r5, 8(r1)
|
||||
bl __mcount_internal@local
|
||||
nop
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.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
|
||||
r10; the registers are saved in a stack frame. */
|
||||
stdu r1,-128(r1)
|
||||
cfi_adjust_cfa_offset (128)
|
||||
std r3,48(r1)
|
||||
mr r3,r11
|
||||
std r4,56(r1)
|
||||
@ -44,6 +45,7 @@ EALIGN(_dl_runtime_resolve, 4, 0)
|
||||
std r8,88(r1)
|
||||
/* Store the LR in the LR Save area of the previous frame. */
|
||||
std r0,128+16(r1)
|
||||
cfi_offset (lr, 16)
|
||||
mfcr r0
|
||||
std r9,96(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
|
||||
r10; the registers are saved in a stack frame. */
|
||||
stdu r1,-FRAME_SIZE(r1)
|
||||
cfi_adjust_cfa_offset (FRAME_SIZE)
|
||||
std r3,INT_PARMS+0(r1)
|
||||
mr r3,r11
|
||||
std r4,INT_PARMS+8(r1)
|
||||
@ -193,6 +196,7 @@ EALIGN(_dl_profile_resolve, 4, 0)
|
||||
/* XXX Do we have to do this? */
|
||||
la r8,FRAME_SIZE(r1)
|
||||
std r5,FRAME_SIZE+16(r1)
|
||||
cfi_offset (lr, 16)
|
||||
std r5,CALLING_LR(r1)
|
||||
mfcr r0
|
||||
std r9,INT_PARMS+48(r1)
|
||||
|
@ -28,7 +28,11 @@ ENTRY(__copysign)
|
||||
copysign(x,y) returns a value with the magnitude of x and
|
||||
with the sign bit of y. */
|
||||
stdu r1,-48(r1)
|
||||
cfi_adjust_cfa_offset (48)
|
||||
stfd fp2,24(r1)
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
ld r3,24(r1)
|
||||
cmpdi r3,0
|
||||
addi r1,r1,48
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
/* We don't need to save the parameter-passing registers as gcc takes
|
||||
@ -26,7 +26,9 @@ ENTRY(_mcount)
|
||||
mflr r4
|
||||
ld r11, 0(r1)
|
||||
stdu r1,-112(r1)
|
||||
cfi_adjust_cfa_offset (112)
|
||||
std r4, 128(r1)
|
||||
cfi_offset (lr, 16)
|
||||
ld r3, 16(r11)
|
||||
bl JUMPTARGET(__mcount_internal)
|
||||
nop
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
@ -27,32 +27,34 @@
|
||||
.section ".text"
|
||||
ENTRY (BP_SYM (__brk))
|
||||
DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em */
|
||||
|
||||
mflr r0
|
||||
stwu r1,-16(r1)
|
||||
cfi_adjust_cfa_offset (16)
|
||||
stw r3,8(r1)
|
||||
stw r0,20(r1)
|
||||
cfi_offset (lr, 4)
|
||||
DO_CALL(SYS_ify(brk))
|
||||
lwz r6,8(r1)
|
||||
#ifdef PIC
|
||||
mflr r4
|
||||
# ifdef HAVE_ASM_PPC_REL16
|
||||
bcl 20,31,1f
|
||||
1: mflr r5
|
||||
addis r5,r5,__curbrk-1b@ha
|
||||
mtlr r4
|
||||
stw r3,__curbrk-1b@l(r5)
|
||||
# else
|
||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||
mflr r5
|
||||
lwz r5,__curbrk@got(r5)
|
||||
mtlr r4
|
||||
stw r3,0(r5)
|
||||
# endif
|
||||
#else
|
||||
lis r4,__curbrk@ha
|
||||
stw r3,__curbrk@l(r4)
|
||||
#endif
|
||||
lwz r0,20(r1)
|
||||
cmplw r6,r3
|
||||
addi r1,r1,16
|
||||
mtlr r0
|
||||
li r3,0
|
||||
blelr+
|
||||
li r3,ENOMEM
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
@ -49,6 +49,7 @@ ENTRY (BP_SYM (__clone))
|
||||
|
||||
/* Set up stack frame for parent. */
|
||||
stwu r1,-32(r1)
|
||||
cfi_adjust_cfa_offset (32)
|
||||
#ifdef RESET_PID
|
||||
stmw r28,16(r1)
|
||||
#else
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -40,6 +40,7 @@
|
||||
#endif
|
||||
ENTRY(__CONTEXT_FUNC_NAME)
|
||||
stwu r1,-16(r1)
|
||||
cfi_adjust_cfa_offset (16)
|
||||
/* Insure that the _UC_REGS start on a quadword boundary. */
|
||||
stw r3,_FRAME_PARM_SAVE1(r1)
|
||||
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_NIP*4)(r3)
|
||||
stw r0,_FRAME_LR_SAVE+16(r1)
|
||||
cfi_offset (lr, _FRAME_LR_SAVE)
|
||||
stw r5,_UC_GREGS+(PT_R5*4)(r3)
|
||||
stw r6,_UC_GREGS+(PT_R6*4)(r3)
|
||||
stw r7,_UC_GREGS+(PT_R7*4)(r3)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <shlib-compat.h>
|
||||
@ -49,10 +49,12 @@ ENTRY(__makecontext)
|
||||
/* Set the function's LR to point to the exitcode below. */
|
||||
#ifdef PIC
|
||||
mflr r0
|
||||
cfi_register(lr,r0)
|
||||
bl 1f
|
||||
1: mflr r6
|
||||
addi r6,r6,L(exitcode)-1b
|
||||
mtlr r0
|
||||
cfi_same_value (lr)
|
||||
#else
|
||||
lis r6,L(exitcode)@ha
|
||||
addi r6,r6,L(exitcode)@l
|
||||
@ -136,10 +138,12 @@ ENTRY(__novec_makecontext)
|
||||
/* Set the function's LR to point to the exitcode below. */
|
||||
#ifdef PIC
|
||||
mflr r0
|
||||
cfi_register(lr,r0)
|
||||
bl 1f
|
||||
1: mflr r6
|
||||
addi r6,r6,L(novec_exitcode)-1b
|
||||
mtlr r0
|
||||
cfi_same_value (lr)
|
||||
#else
|
||||
lis r6,L(novec_exitcode)@ha
|
||||
addi r6,r6,L(novec_exitcode)@l
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -41,7 +41,9 @@
|
||||
ENTRY(__CONTEXT_FUNC_NAME)
|
||||
mflr r0
|
||||
stwu r1,-16(r1)
|
||||
cfi_adjust_cfa_offset (16)
|
||||
stw r0,20(r1)
|
||||
cfi_offset (lr, _FRAME_LR_SAVE)
|
||||
stw r31,12(r1)
|
||||
lwz r31,_UC_REGS_PTR(r3)
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -40,6 +40,7 @@
|
||||
#endif
|
||||
ENTRY(__CONTEXT_FUNC_NAME)
|
||||
stwu r1,-16(r1)
|
||||
cfi_adjust_cfa_offset (16)
|
||||
/* Insure that the _UC_REGS start on a quadword boundary. */
|
||||
stw r3,_FRAME_PARM_SAVE1(r1)
|
||||
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_NIP*4)(r3)
|
||||
stw r0,_FRAME_LR_SAVE+16(r1)
|
||||
cfi_offset (lr, _FRAME_LR_SAVE)
|
||||
stw r5,_UC_GREGS+(PT_R5*4)(r3)
|
||||
stw r6,_UC_GREGS+(PT_R6*4)(r3)
|
||||
stw r7,_UC_GREGS+(PT_R7*4)(r3)
|
||||
@ -309,13 +311,12 @@ ENTRY(__CONTEXT_FUNC_NAME)
|
||||
bl _GLOBAL_OFFSET_TABLE_@local-4
|
||||
mflr r7
|
||||
# endif
|
||||
mtlr r8
|
||||
# ifdef SHARED
|
||||
lwz r7,_rtld_global_ro@got(r7)
|
||||
mtlr r8
|
||||
lwz r7,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r7)
|
||||
# else
|
||||
lwz r7,_dl_hwcap@got(r7)
|
||||
mtlr r8
|
||||
lwz r7,0(r7)
|
||||
# endif
|
||||
# else
|
||||
@ -467,7 +468,6 @@ ENTRY(__CONTEXT_FUNC_NAME)
|
||||
mtcr r5
|
||||
|
||||
/* Restore the general registers */
|
||||
lwz r1,_UC_GREGS+(PT_R1*4)(r31)
|
||||
lwz r3,_UC_GREGS+(PT_R3*4)(r31)
|
||||
lwz r4,_UC_GREGS+(PT_R4*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 r29,_UC_GREGS+(PT_R29*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)
|
||||
|
||||
bctr
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
@ -33,6 +33,7 @@ ENTRY (BP_SYM (__brk))
|
||||
DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em. */
|
||||
|
||||
stdu r1,-64(r1)
|
||||
cfi_adjust_cfa_offset (64)
|
||||
std r3,48(r1)
|
||||
DO_CALL(SYS_ify(brk))
|
||||
ld r6,48(r1)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H 1
|
||||
@ -48,6 +48,7 @@ ENTRY (BP_SYM (__clone))
|
||||
|
||||
/* Set up stack frame for parent. */
|
||||
stdu r1,-80(r1)
|
||||
cfi_adjust_cfa_offset (80)
|
||||
std r29,56(r1)
|
||||
std r30,64(r1)
|
||||
std r31,72(r1)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <rtld-global-offsets.h>
|
||||
@ -37,9 +37,11 @@ ENTRY(__novec_getcontext)
|
||||
mflr r0
|
||||
std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3)
|
||||
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_NIP*8))(r3)
|
||||
stdu r1,-128(r1)
|
||||
cfi_adjust_cfa_offset (128)
|
||||
std r4,(SIGCONTEXT_GP_REGS+(PT_R4*8))(r3)
|
||||
std r5,(SIGCONTEXT_GP_REGS+(PT_R5*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. */
|
||||
mflr r0
|
||||
std r0,FRAME_LR_SAVE(r1)
|
||||
cfi_offset (lr, FRAME_LR_SAVE)
|
||||
stdu r1,-128(r1)
|
||||
li r3,ENOSYS
|
||||
bl JUMPTARGET(__syscall_error)
|
||||
@ -175,9 +178,11 @@ ENTRY(__getcontext)
|
||||
mflr r0
|
||||
std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3)
|
||||
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_NIP*8))(r3)
|
||||
stdu r1,-128(r1)
|
||||
cfi_adjust_cfa_offset (128)
|
||||
std r4,(SIGCONTEXT_GP_REGS+(PT_R4*8))(r3)
|
||||
std r5,(SIGCONTEXT_GP_REGS+(PT_R5*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. */
|
||||
mflr r0
|
||||
std r0,FRAME_LR_SAVE(r1)
|
||||
cfi_offset (lr, FRAME_LR_SAVE)
|
||||
stdu r1,-128(r1)
|
||||
cfi_adjust_cfa_offset (128)
|
||||
li r3,ENOSYS
|
||||
bl JUMPTARGET(__syscall_error)
|
||||
nop
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include "kernel-features.h"
|
||||
@ -41,7 +41,9 @@ ENTRY(__makecontext)
|
||||
/* Get the address of the target functions first parameter. */
|
||||
addi r6,r1,FRAME_PARM4_SAVE
|
||||
std r0,FRAME_LR_SAVE(r1)
|
||||
cfi_offset (lr, FRAME_LR_SAVE)
|
||||
stdu r1,-128(r1)
|
||||
cfi_adjust_cfa_offset (128)
|
||||
|
||||
/* Get the ucontexts stack pointer and size. Compute the top of stack
|
||||
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. */
|
||||
mflr r0
|
||||
std r0,FRAME_LR_SAVE(r1)
|
||||
cfi_offset (lr, FRAME_LR_SAVE)
|
||||
stdu r1,-128(r1)
|
||||
cfi_adjust_cfa_offset (128)
|
||||
li r3,ENOSYS
|
||||
bl JUMPTARGET(__syscall_error)
|
||||
nop
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <rtld-global-offsets.h>
|
||||
@ -34,7 +34,9 @@ ENTRY(__novec_setcontext)
|
||||
mflr r0
|
||||
std r31,-8(1)
|
||||
std r0,FRAME_LR_SAVE(r1)
|
||||
cfi_offset (lr, FRAME_LR_SAVE)
|
||||
stdu r1,-128(r1)
|
||||
cfi_adjust_cfa_offset (128)
|
||||
mr r31,r3
|
||||
|
||||
/*
|
||||
@ -200,7 +202,9 @@ ENTRY(__setcontext)
|
||||
mflr r0
|
||||
std r31,-8(1)
|
||||
std r0,FRAME_LR_SAVE(r1)
|
||||
cfi_offset (lr, FRAME_LR_SAVE)
|
||||
stdu r1,-128(r1)
|
||||
cfi_adjust_cfa_offset (128)
|
||||
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. */
|
||||
mflr r0
|
||||
std r0,FRAME_LR_SAVE(r1)
|
||||
cfi_offset (lr, FRAME_LR_SAVE)
|
||||
stdu r1,-128(r1)
|
||||
cfi_adjust_cfa_offset (128)
|
||||
li r3,ENOSYS
|
||||
bl JUMPTARGET(__syscall_error)
|
||||
nop
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
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
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
|
||||
02110-1301 USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <rtld-global-offsets.h>
|
||||
@ -37,9 +37,11 @@ ENTRY(__novec_swapcontext)
|
||||
std r31,-8(1)
|
||||
std r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3)
|
||||
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_NIP*8))(r3)
|
||||
stdu r1,-128(r1)
|
||||
cfi_adjust_cfa_offset (128)
|
||||
std r4,(SIGCONTEXT_GP_REGS+(PT_R4*8))(r3)
|
||||
std r5,(SIGCONTEXT_GP_REGS+(PT_R5*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. */
|
||||
mflr r0
|
||||
std r0,FRAME_LR_SAVE(r1)
|
||||
cfi_offset (lr, FRAME_LR_SAVE)
|
||||
stdu r1,-128(r1)
|
||||
cfi_adjust_cfa_offset (128)
|
||||
li r3,ENOSYS
|
||||
bl JUMPTARGET(__syscall_error)
|
||||
nop
|
||||
|
Loading…
Reference in New Issue
Block a user