mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 19:00:07 +00:00
Update.
2004-10-06 Alan Modra <amodra@bigpond.net.au> * gmon/Makefile (CFLAGS-mcount.c): Move before inclusion of "Rules". * sysdeps/powerpc/powerpc64/Makefile (CFLAGS-mcount.c): Add -msoft-float. * sysdeps/powerpc/powerpc64/sysdep.h (SAVE_ARG, REST_ARG): New macros. (CALL_MCOUNT): Replace with a gas macro implementation. (EALIGN): Delete PROF version. * sysdeps/powerpc/powerpc64/__longjmp-common.S: Invoke CALL_MCOUNT. * sysdeps/powerpc/powerpc64/bsd-_setjmp.S: Likewise. * sysdeps/powerpc/powerpc64/bsd-setjmp.S: Likewise. * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise. * sysdeps/powerpc/powerpc64/memcpy.S: Likewise. * sysdeps/powerpc/powerpc64/memset.S: Likewise. * sysdeps/powerpc/powerpc64/stpcpy.S: Likewise. * sysdeps/powerpc/powerpc64/strchr.S: Likewise. * sysdeps/powerpc/powerpc64/strcmp.S: Likewise. * sysdeps/powerpc/powerpc64/strcpy.S: Likewise. * sysdeps/powerpc/powerpc64/strlen.S: Likewise. * sysdeps/powerpc/powerpc64/strncmp.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_floor.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_floorf.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_llrintf.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_llround.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_rint.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_rintf.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_round.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_roundf.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_trunc.S: Likewise. * sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Likewise. * sysdeps/powerpc/powerpc64/setjmp-common.S: Add extra entry point past _mcount call. * sysdeps/powerpc/powerpc64/bsd-_setjmp.S: Use it. * sysdeps/powerpc/powerpc64/bsd-setjmp.S: Likewise.
This commit is contained in:
parent
3feb8efa5d
commit
d7d06f795f
41
ChangeLog
41
ChangeLog
@ -1,3 +1,44 @@
|
|||||||
|
2004-10-06 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* gmon/Makefile (CFLAGS-mcount.c): Move before inclusion of "Rules".
|
||||||
|
* sysdeps/powerpc/powerpc64/Makefile (CFLAGS-mcount.c): Add
|
||||||
|
-msoft-float.
|
||||||
|
* sysdeps/powerpc/powerpc64/sysdep.h (SAVE_ARG, REST_ARG): New macros.
|
||||||
|
(CALL_MCOUNT): Replace with a gas macro implementation.
|
||||||
|
(EALIGN): Delete PROF version.
|
||||||
|
* sysdeps/powerpc/powerpc64/__longjmp-common.S: Invoke CALL_MCOUNT.
|
||||||
|
* sysdeps/powerpc/powerpc64/bsd-_setjmp.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/bsd-setjmp.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/memcpy.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/memset.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/stpcpy.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/strchr.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/strcmp.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/strcpy.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/strlen.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/strncmp.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_floor.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_floorf.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_llrintf.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_llround.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_rint.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_rintf.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_round.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_roundf.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_trunc.S: Likewise.
|
||||||
|
* sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Likewise.
|
||||||
|
|
||||||
|
* sysdeps/powerpc/powerpc64/setjmp-common.S: Add extra entry point
|
||||||
|
past _mcount call.
|
||||||
|
* sysdeps/powerpc/powerpc64/bsd-_setjmp.S: Use it.
|
||||||
|
* sysdeps/powerpc/powerpc64/bsd-setjmp.S: Likewise.
|
||||||
|
|
||||||
2004-10-06 Ulrich Drepper <drepper@redhat.com>
|
2004-10-06 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* resolv/res_mkquery.c (res_nmkquery): Reject randombits value if
|
* resolv/res_mkquery.c (res_nmkquery): Reject randombits value if
|
||||||
|
@ -29,11 +29,11 @@ elide-routines.os = bb_init_func bb_exit_func
|
|||||||
|
|
||||||
tests := tst-sprofil
|
tests := tst-sprofil
|
||||||
|
|
||||||
include ../Rules
|
|
||||||
|
|
||||||
# The mcount code won't work without a frame pointer.
|
# The mcount code won't work without a frame pointer.
|
||||||
CFLAGS-mcount.c := -fno-omit-frame-pointer
|
CFLAGS-mcount.c := -fno-omit-frame-pointer
|
||||||
|
|
||||||
|
include ../Rules
|
||||||
|
|
||||||
# We cannot compile mcount.c with -pg because that would
|
# We cannot compile mcount.c with -pg because that would
|
||||||
# create recursive calls. Just copy the normal static object.
|
# create recursive calls. Just copy the normal static object.
|
||||||
# On systems where `profil' is not a system call, the same
|
# On systems where `profil' is not a system call, the same
|
||||||
|
@ -22,3 +22,10 @@ ifeq ($(subdir),elf)
|
|||||||
# help gcc inline asm code from dl-machine.h
|
# help gcc inline asm code from dl-machine.h
|
||||||
+cflags += -finline-limit=2000
|
+cflags += -finline-limit=2000
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(subdir),gmon)
|
||||||
|
# The assembly functions assume that fp arg regs are not trashed.
|
||||||
|
# Compiling with -msoft-float ensures that fp regs are not used
|
||||||
|
# for moving memory around.
|
||||||
|
CFLAGS-mcount.c += -msoft-float
|
||||||
|
endif
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
.machine "altivec"
|
.machine "altivec"
|
||||||
ENTRY (BP_SYM (__longjmp))
|
ENTRY (BP_SYM (__longjmp))
|
||||||
|
CALL_MCOUNT 2
|
||||||
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
||||||
#ifndef __NO_VMX__
|
#ifndef __NO_VMX__
|
||||||
ld r5,.LC__dl_hwcap@toc(r2)
|
ld r5,.LC__dl_hwcap@toc(r2)
|
||||||
|
@ -25,8 +25,9 @@
|
|||||||
#if defined NOT_IN_libc
|
#if defined NOT_IN_libc
|
||||||
/* Build a non-versioned object for rtld-*. */
|
/* Build a non-versioned object for rtld-*. */
|
||||||
ENTRY (BP_SYM (_setjmp))
|
ENTRY (BP_SYM (_setjmp))
|
||||||
|
CALL_MCOUNT 1
|
||||||
li r4,0 /* Set second argument to 0. */
|
li r4,0 /* Set second argument to 0. */
|
||||||
b JUMPTARGET(BP_SYM (__sigsetjmp))
|
b JUMPTARGET (__sigsetjmp_ent)
|
||||||
END (BP_SYM (_setjmp))
|
END (BP_SYM (_setjmp))
|
||||||
libc_hidden_def (_setjmp)
|
libc_hidden_def (_setjmp)
|
||||||
|
|
||||||
@ -36,8 +37,9 @@ libc_hidden_def (_setjmp)
|
|||||||
symbol_version (__novmx_setjmp,_setjmp,GLIBC_2.3);
|
symbol_version (__novmx_setjmp,_setjmp,GLIBC_2.3);
|
||||||
|
|
||||||
ENTRY (BP_SYM (__novmx_setjmp))
|
ENTRY (BP_SYM (__novmx_setjmp))
|
||||||
|
CALL_MCOUNT 1
|
||||||
li r4,0 /* Set second argument to 0. */
|
li r4,0 /* Set second argument to 0. */
|
||||||
b JUMPTARGET(BP_SYM (__novmx__sigsetjmp))
|
b JUMPTARGET (__novmx__sigsetjmp_ent)
|
||||||
END (BP_SYM (__novmx_setjmp))
|
END (BP_SYM (__novmx_setjmp))
|
||||||
libc_hidden_def (__novmx_setjmp)
|
libc_hidden_def (__novmx_setjmp)
|
||||||
# endif /* defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4) */
|
# endif /* defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4) */
|
||||||
@ -50,13 +52,15 @@ ENTRY (BP_SYM (__GI__setjmp))
|
|||||||
#if defined SHARED && !defined IS_IN_rtld
|
#if defined SHARED && !defined IS_IN_rtld
|
||||||
std r2,40(r1) /* Save the callers TOC in the save area. */
|
std r2,40(r1) /* Save the callers TOC in the save area. */
|
||||||
#endif
|
#endif
|
||||||
|
CALL_MCOUNT 1
|
||||||
li r4,0 /* Set second argument to 0. */
|
li r4,0 /* Set second argument to 0. */
|
||||||
b JUMPTARGET(BP_SYM (__vmx__sigsetjmp))
|
b JUMPTARGET (__vmx__sigsetjmp_ent)
|
||||||
END (BP_SYM (__GI__setjmp))
|
END (BP_SYM (__GI__setjmp))
|
||||||
|
|
||||||
ENTRY (BP_SYM (__vmx_setjmp))
|
ENTRY (BP_SYM (__vmx_setjmp))
|
||||||
|
CALL_MCOUNT 1
|
||||||
li r4,0 /* Set second argument to 0. */
|
li r4,0 /* Set second argument to 0. */
|
||||||
b JUMPTARGET(BP_SYM (__vmx__sigsetjmp))
|
b JUMPTARGET (__vmx__sigsetjmp_ent)
|
||||||
END (BP_SYM (__vmx_setjmp))
|
END (BP_SYM (__vmx_setjmp))
|
||||||
libc_hidden_def (__vmx_setjmp)
|
libc_hidden_def (__vmx_setjmp)
|
||||||
#endif /* !NOT_IN_libc */
|
#endif /* !NOT_IN_libc */
|
||||||
|
@ -25,8 +25,9 @@
|
|||||||
|
|
||||||
|
|
||||||
ENTRY (__novmxsetjmp)
|
ENTRY (__novmxsetjmp)
|
||||||
|
CALL_MCOUNT 1
|
||||||
li r4,1 /* Set second argument to 1. */
|
li r4,1 /* Set second argument to 1. */
|
||||||
b JUMPTARGET (__novmx__sigsetjmp)
|
b JUMPTARGET (__novmx__sigsetjmp_ent)
|
||||||
END (__novmxsetjmp)
|
END (__novmxsetjmp)
|
||||||
strong_alias (__novmxsetjmp, __novmx__setjmp)
|
strong_alias (__novmxsetjmp, __novmx__setjmp)
|
||||||
symbol_version (__novmxsetjmp, setjmp, GLIBC_2.3)
|
symbol_version (__novmxsetjmp, setjmp, GLIBC_2.3)
|
||||||
@ -35,8 +36,9 @@ symbol_version (__novmxsetjmp, setjmp, GLIBC_2.3)
|
|||||||
|
|
||||||
|
|
||||||
ENTRY (__vmxsetjmp)
|
ENTRY (__vmxsetjmp)
|
||||||
|
CALL_MCOUNT 1
|
||||||
li r4,1 /* Set second argument to 1. */
|
li r4,1 /* Set second argument to 1. */
|
||||||
b JUMPTARGET (__vmx__sigsetjmp)
|
b JUMPTARGET (__vmx__sigsetjmp_ent)
|
||||||
END (__vmxsetjmp)
|
END (__vmxsetjmp)
|
||||||
strong_alias (__vmxsetjmp, __vmx__setjmp)
|
strong_alias (__vmxsetjmp, __vmx__setjmp)
|
||||||
strong_alias (__vmx__sigsetjmp, __setjmp)
|
strong_alias (__vmx__sigsetjmp, __setjmp)
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
.section ".text"
|
.section ".text"
|
||||||
|
|
||||||
ENTRY (__ceil)
|
ENTRY (__ceil)
|
||||||
|
CALL_MCOUNT 0
|
||||||
mffs fp11 /* Save current FPU rounding mode. */
|
mffs fp11 /* Save current FPU rounding mode. */
|
||||||
lfd fp13,.LC0@toc(2)
|
lfd fp13,.LC0@toc(2)
|
||||||
fabs fp0,fp1
|
fabs fp0,fp1
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
.section ".text"
|
.section ".text"
|
||||||
|
|
||||||
ENTRY (__ceilf)
|
ENTRY (__ceilf)
|
||||||
|
CALL_MCOUNT 0
|
||||||
mffs fp11 /* Save current FPU rounding mode. */
|
mffs fp11 /* Save current FPU rounding mode. */
|
||||||
lfd fp13,.LC0@toc(2)
|
lfd fp13,.LC0@toc(2)
|
||||||
fabs fp0,fp1
|
fabs fp0,fp1
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
|
|
||||||
ENTRY(__copysign)
|
ENTRY(__copysign)
|
||||||
|
CALL_MCOUNT 0
|
||||||
/* double [f1] copysign (double [f1] x, double [f2] y);
|
/* double [f1] copysign (double [f1] x, double [f2] y);
|
||||||
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. */
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
.section ".text"
|
.section ".text"
|
||||||
|
|
||||||
ENTRY (__floor)
|
ENTRY (__floor)
|
||||||
|
CALL_MCOUNT 0
|
||||||
mffs fp11 /* Save current FPU rounding mode. */
|
mffs fp11 /* Save current FPU rounding mode. */
|
||||||
lfd fp13,.LC0@toc(2)
|
lfd fp13,.LC0@toc(2)
|
||||||
fabs fp0,fp1
|
fabs fp0,fp1
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
.section ".text"
|
.section ".text"
|
||||||
|
|
||||||
ENTRY (__floorf)
|
ENTRY (__floorf)
|
||||||
|
CALL_MCOUNT 0
|
||||||
mffs fp11 /* Save current FPU rounding mode. */
|
mffs fp11 /* Save current FPU rounding mode. */
|
||||||
lfd fp13,.LC0@toc(2)
|
lfd fp13,.LC0@toc(2)
|
||||||
fabs fp0,fp1
|
fabs fp0,fp1
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
/* long long int[r3] __llrint (double x[fp1]) */
|
/* long long int[r3] __llrint (double x[fp1]) */
|
||||||
ENTRY (__llrint)
|
ENTRY (__llrint)
|
||||||
|
CALL_MCOUNT 0
|
||||||
fctid fp13,fp1
|
fctid fp13,fp1
|
||||||
stfd fp13,-16(r1)
|
stfd fp13,-16(r1)
|
||||||
nop /* Insure the following load is in a different dispatch group */
|
nop /* Insure the following load is in a different dispatch group */
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
/* long long int[r3] __llrintf (float x[fp1]) */
|
/* long long int[r3] __llrintf (float x[fp1]) */
|
||||||
ENTRY (__llrintf)
|
ENTRY (__llrintf)
|
||||||
|
CALL_MCOUNT 0
|
||||||
fctid fp13,fp1
|
fctid fp13,fp1
|
||||||
stfd fp13,-16(r1)
|
stfd fp13,-16(r1)
|
||||||
nop /* Insure the following load is in a different dispatch group */
|
nop /* Insure the following load is in a different dispatch group */
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
to the integer value. */
|
to the integer value. */
|
||||||
|
|
||||||
ENTRY (__llround)
|
ENTRY (__llround)
|
||||||
|
CALL_MCOUNT 0
|
||||||
lfd fp12,.LC0@toc(2)
|
lfd fp12,.LC0@toc(2)
|
||||||
lfd fp10,.LC1@toc(2)
|
lfd fp10,.LC1@toc(2)
|
||||||
fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
|
fcmpu cr6,fp1,fp12 /* if (x > 0.0) */
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
to the integer value. */
|
to the integer value. */
|
||||||
|
|
||||||
ENTRY (__llroundf)
|
ENTRY (__llroundf)
|
||||||
|
CALL_MCOUNT 0
|
||||||
lfd fp12,.LC0@toc(2)
|
lfd fp12,.LC0@toc(2)
|
||||||
lfd fp10,.LC1@toc(2)
|
lfd fp10,.LC1@toc(2)
|
||||||
fcmpu cr6,fp1,fp12 /* if (x < 0.0) */
|
fcmpu cr6,fp1,fp12 /* if (x < 0.0) */
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
.section ".text"
|
.section ".text"
|
||||||
|
|
||||||
ENTRY (__rint)
|
ENTRY (__rint)
|
||||||
|
CALL_MCOUNT 0
|
||||||
lfd fp13,.LC0@toc(2)
|
lfd fp13,.LC0@toc(2)
|
||||||
fabs fp0,fp1
|
fabs fp0,fp1
|
||||||
fsub fp12,fp13,fp13 /* generate 0.0 */
|
fsub fp12,fp13,fp13 /* generate 0.0 */
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
.section ".text"
|
.section ".text"
|
||||||
|
|
||||||
ENTRY (__rintf)
|
ENTRY (__rintf)
|
||||||
|
CALL_MCOUNT 0
|
||||||
lfd fp13,.LC0@toc(2)
|
lfd fp13,.LC0@toc(2)
|
||||||
fabs fp0,fp1
|
fabs fp0,fp1
|
||||||
fsubs fp12,fp13,fp13 /* generate 0.0 */
|
fsubs fp12,fp13,fp13 /* generate 0.0 */
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
to the integer value. */
|
to the integer value. */
|
||||||
|
|
||||||
ENTRY (__round)
|
ENTRY (__round)
|
||||||
|
CALL_MCOUNT 0
|
||||||
mffs fp11 /* Save current FPU rounding mode. */
|
mffs fp11 /* Save current FPU rounding mode. */
|
||||||
lfd fp13,.LC0@toc(2)
|
lfd fp13,.LC0@toc(2)
|
||||||
fabs fp0,fp1
|
fabs fp0,fp1
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
to the integer value. */
|
to the integer value. */
|
||||||
|
|
||||||
ENTRY (__roundf )
|
ENTRY (__roundf )
|
||||||
|
CALL_MCOUNT 0
|
||||||
mffs fp11 /* Save current FPU rounding mode. */
|
mffs fp11 /* Save current FPU rounding mode. */
|
||||||
lfd fp13,.LC0@toc(2)
|
lfd fp13,.LC0@toc(2)
|
||||||
fabs fp0,fp1
|
fabs fp0,fp1
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
subtracting +-2**52. */
|
subtracting +-2**52. */
|
||||||
|
|
||||||
ENTRY (__trunc)
|
ENTRY (__trunc)
|
||||||
|
CALL_MCOUNT 0
|
||||||
mffs fp11 /* Save current FPU rounding mode. */
|
mffs fp11 /* Save current FPU rounding mode. */
|
||||||
lfd fp13,.LC0@toc(2)
|
lfd fp13,.LC0@toc(2)
|
||||||
fabs fp0,fp1
|
fabs fp0,fp1
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
subtracting +-2**23. */
|
subtracting +-2**23. */
|
||||||
|
|
||||||
ENTRY (__truncf)
|
ENTRY (__truncf)
|
||||||
|
CALL_MCOUNT 0
|
||||||
mffs fp11 /* Save current FPU rounding mode. */
|
mffs fp11 /* Save current FPU rounding mode. */
|
||||||
lfd fp13,.LC0@toc(2)
|
lfd fp13,.LC0@toc(2)
|
||||||
fabs fp0,fp1
|
fabs fp0,fp1
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
Each case has a optimized unrolled loop. */
|
Each case has a optimized unrolled loop. */
|
||||||
|
|
||||||
EALIGN (BP_SYM (memcpy), 5, 0)
|
EALIGN (BP_SYM (memcpy), 5, 0)
|
||||||
|
CALL_MCOUNT 3
|
||||||
|
|
||||||
cmpldi cr1,5,31
|
cmpldi cr1,5,31
|
||||||
neg 0,3
|
neg 0,3
|
||||||
std 3,-16(1)
|
std 3,-16(1)
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
to 0, to take advantage of the dcbz instruction. */
|
to 0, to take advantage of the dcbz instruction. */
|
||||||
|
|
||||||
EALIGN (BP_SYM (memset), 5, 0)
|
EALIGN (BP_SYM (memset), 5, 0)
|
||||||
|
CALL_MCOUNT 3
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3 /* Initial value of 1st argument. */
|
#define rRTN r3 /* Initial value of 1st argument. */
|
||||||
@ -274,6 +275,7 @@ libc_hidden_builtin_def (memset)
|
|||||||
/* Copied from bzero.S to prevent the linker from inserting a stub
|
/* Copied from bzero.S to prevent the linker from inserting a stub
|
||||||
between bzero and memset. */
|
between bzero and memset. */
|
||||||
ENTRY (BP_SYM (__bzero))
|
ENTRY (BP_SYM (__bzero))
|
||||||
|
CALL_MCOUNT 3
|
||||||
#if __BOUNDED_POINTERS__
|
#if __BOUNDED_POINTERS__
|
||||||
mr r6,r4
|
mr r6,r4
|
||||||
li r5,0
|
li r5,0
|
||||||
|
@ -41,6 +41,10 @@
|
|||||||
|
|
||||||
.machine "altivec"
|
.machine "altivec"
|
||||||
ENTRY (BP_SYM (__sigsetjmp))
|
ENTRY (BP_SYM (__sigsetjmp))
|
||||||
|
CALL_MCOUNT 2
|
||||||
|
.globl JUMPTARGET(GLUE(__sigsetjmp,_ent))
|
||||||
|
.hidden JUMPTARGET(GLUE(__sigsetjmp,_ent))
|
||||||
|
JUMPTARGET(GLUE(__sigsetjmp,_ent)):
|
||||||
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE)
|
||||||
std r1,(JB_GPR1*8)(3)
|
std r1,(JB_GPR1*8)(3)
|
||||||
mflr r0
|
mflr r0
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/* char * [r3] stpcpy (char *dest [r3], const char *src [r4]) */
|
/* char * [r3] stpcpy (char *dest [r3], const char *src [r4]) */
|
||||||
|
|
||||||
EALIGN (BP_SYM (__stpcpy), 4, 0)
|
EALIGN (BP_SYM (__stpcpy), 4, 0)
|
||||||
|
CALL_MCOUNT 2
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3
|
#define rRTN r3
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/* char * [r3] strchr (const char *s [r3] , int c [r4] ) */
|
/* char * [r3] strchr (const char *s [r3] , int c [r4] ) */
|
||||||
|
|
||||||
ENTRY (BP_SYM (strchr))
|
ENTRY (BP_SYM (strchr))
|
||||||
|
CALL_MCOUNT 2
|
||||||
|
|
||||||
#define rTMP1 r0
|
#define rTMP1 r0
|
||||||
#define rRTN r3 /* outgoing result */
|
#define rRTN r3 /* outgoing result */
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4]) */
|
/* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4]) */
|
||||||
|
|
||||||
EALIGN (BP_SYM(strcmp), 4, 0)
|
EALIGN (BP_SYM(strcmp), 4, 0)
|
||||||
|
CALL_MCOUNT 2
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3
|
#define rRTN r3
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/* char * [r3] strcpy (char *dest [r3], const char *src [r4]) */
|
/* char * [r3] strcpy (char *dest [r3], const char *src [r4]) */
|
||||||
|
|
||||||
EALIGN (BP_SYM (strcpy), 4, 0)
|
EALIGN (BP_SYM (strcpy), 4, 0)
|
||||||
|
CALL_MCOUNT 2
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3 /* incoming DEST arg preserved as result */
|
#define rRTN r3 /* incoming DEST arg preserved as result */
|
||||||
|
@ -79,6 +79,7 @@
|
|||||||
/* int [r3] strlen (char *s [r3]) */
|
/* int [r3] strlen (char *s [r3]) */
|
||||||
|
|
||||||
ENTRY (BP_SYM (strlen))
|
ENTRY (BP_SYM (strlen))
|
||||||
|
CALL_MCOUNT 1
|
||||||
|
|
||||||
#define rTMP1 r0
|
#define rTMP1 r0
|
||||||
#define rRTN r3 /* incoming STR arg, outgoing result */
|
#define rRTN r3 /* incoming STR arg, outgoing result */
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
/* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5]) */
|
/* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5]) */
|
||||||
|
|
||||||
EALIGN (BP_SYM(strncmp), 4, 0)
|
EALIGN (BP_SYM(strncmp), 4, 0)
|
||||||
|
CALL_MCOUNT 3
|
||||||
|
|
||||||
#define rTMP r0
|
#define rTMP r0
|
||||||
#define rRTN r3
|
#define rRTN r3
|
||||||
|
@ -23,37 +23,36 @@
|
|||||||
|
|
||||||
#ifdef __ASSEMBLER__
|
#ifdef __ASSEMBLER__
|
||||||
|
|
||||||
|
/* Support macros for CALL_MCOUNT. */
|
||||||
|
.macro SAVE_ARG NARG
|
||||||
|
.if \NARG
|
||||||
|
SAVE_ARG \NARG-1
|
||||||
|
std 2+\NARG,-72+8*(\NARG)(1)
|
||||||
|
.endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro REST_ARG NARG
|
||||||
|
.if \NARG
|
||||||
|
REST_ARG \NARG-1
|
||||||
|
ld 2+\NARG,40+8*(\NARG)(1)
|
||||||
|
.endif
|
||||||
|
.endm
|
||||||
|
|
||||||
/* If compiled for profiling, call `_mcount' at the start of each function.
|
/* If compiled for profiling, call `_mcount' at the start of each function.
|
||||||
see ppc-mcount.S for more details. */
|
see ppc-mcount.S for more details. */
|
||||||
|
.macro CALL_MCOUNT NARG
|
||||||
#ifdef PROF
|
#ifdef PROF
|
||||||
/* The mcount code relies on a the return address being on the stack
|
mflr r0
|
||||||
to locate our caller and so it can restore it; so store one just
|
SAVE_ARG \NARG
|
||||||
for its benefit. */
|
std r0,16(r1)
|
||||||
#ifdef SYSV_ELF_PROFILING
|
stdu r1,-112(r1)
|
||||||
#define CALL_MCOUNT \
|
bl JUMPTARGET (_mcount)
|
||||||
.pushsection; \
|
ld r0,128(r1)
|
||||||
.section ".data"; \
|
REST_ARG \NARG
|
||||||
.align ALIGNARG(2); \
|
addi r1,r1,112
|
||||||
__mcount: \
|
mtlr r0
|
||||||
.long 0; \
|
#endif
|
||||||
.previous; \
|
.endm
|
||||||
.section ".toc","aw"; \
|
|
||||||
.LC__mcount:; \
|
|
||||||
.tc __mcount[TC],__mcount; \
|
|
||||||
.previous; \
|
|
||||||
mflr r0; \
|
|
||||||
std r0,16(r1); \
|
|
||||||
ld r0,.LC__mcount@toc(r2); \
|
|
||||||
bl JUMPTARGET(_mcount);
|
|
||||||
#else /* SYSV_ELF_PROFILING */
|
|
||||||
#define CALL_MCOUNT \
|
|
||||||
mflr r0; \
|
|
||||||
std r0,16(r1); \
|
|
||||||
bl JUMPTARGET(_mcount);
|
|
||||||
#endif /* SYSV_ELF_PROFILING */
|
|
||||||
#else /* PROF */
|
|
||||||
#define CALL_MCOUNT /* Do nothing. */
|
|
||||||
#endif /* PROF */
|
|
||||||
|
|
||||||
#ifdef USE_PPC64_OVERLAPPING_OPD
|
#ifdef USE_PPC64_OVERLAPPING_OPD
|
||||||
# define OPD_ENT(name) .quad BODY_LABEL (name), .TOC.@tocbase
|
# define OPD_ENT(name) .quad BODY_LABEL (name), .TOC.@tocbase
|
||||||
@ -106,24 +105,11 @@ BODY_LABEL(name):
|
|||||||
|
|
||||||
/* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes
|
/* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes
|
||||||
past a 2^alignt boundary. */
|
past a 2^alignt boundary. */
|
||||||
#ifdef PROF
|
|
||||||
#define EALIGN(name, alignt, words) \
|
|
||||||
ENTRY_2(name) \
|
|
||||||
.align ALIGNARG(alignt); \
|
|
||||||
EALIGN_W_##words; \
|
|
||||||
BODY_LABEL(name): \
|
|
||||||
CALL_MCOUNT \
|
|
||||||
b 0f; \
|
|
||||||
.align ALIGNARG(alignt); \
|
|
||||||
EALIGN_W_##words; \
|
|
||||||
0:
|
|
||||||
#else /* PROF */
|
|
||||||
#define EALIGN(name, alignt, words) \
|
#define EALIGN(name, alignt, words) \
|
||||||
ENTRY_2(name) \
|
ENTRY_2(name) \
|
||||||
.align ALIGNARG(alignt); \
|
.align ALIGNARG(alignt); \
|
||||||
EALIGN_W_##words; \
|
EALIGN_W_##words; \
|
||||||
BODY_LABEL(name):
|
BODY_LABEL(name):
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Local labels stripped out by the linker. */
|
/* Local labels stripped out by the linker. */
|
||||||
#undef L
|
#undef L
|
||||||
|
Loading…
Reference in New Issue
Block a user