mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 07:10:06 +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>
|
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.
|
||||||
|
@ -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 *);
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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; */
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user