]> sourceware.org Git - glibc.git/commitdiff
PowerPC64 ENTRY_TOCLESS
authorAlan Modra <amodra@gmail.com>
Wed, 14 Jun 2017 01:15:50 +0000 (10:45 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 14 Jun 2017 01:15:50 +0000 (10:45 +0930)
A number of functions in the sysdeps/powerpc/powerpc64/ tree don't use
or change r2, yet declare a global entry that sets up r2.  This patch
fixes that problem, and consolidates the ENTRY and EALIGN macros.

* sysdeps/powerpc/powerpc64/sysdep.h: Formatting.
(NOPS, ENTRY_3): New macros.
(ENTRY): Rewrite.
(ENTRY_TOCLESS): Define.
(EALIGN, EALIGN_W_0, EALIGN_W_1, EALIGN_W_2, EALIGN_W_4, EALIGN_W_5,
EALIGN_W_6, EALIGN_W_7, EALIGN_W_8): Delete.
* sysdeps/powerpc/powerpc64/a2/memcpy.S: Replace EALIGN with ENTRY.
* sysdeps/powerpc/powerpc64/dl-trampoline.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_floor.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_floorf.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.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/memset.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strstr.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/strcasestr.S: Likewise.
* sysdeps/powerpc/powerpc64/addmul_1.S: Use ENTRY_TOCLESS.
* sysdeps/powerpc/powerpc64/cell/memcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_copysignl.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_fabsl.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_isnan.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_llrintf.S: Likewise.
* sysdeps/powerpc/powerpc64/lshift.S: Likewise.
* sysdeps/powerpc/powerpc64/memcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/mul_1.S: Likewise.
* sysdeps/powerpc/powerpc64/power4/memcmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power4/memcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/power4/memset.S: Likewise.
* sysdeps/powerpc/powerpc64/power4/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S: Likewise.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S: Likewise.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S: Likewise.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S: Likewise.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S: Likewise.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S: Likewise.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S: Likewise.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S: Likewise.
* sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S: Likewise.
* sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S: Likewise.
* sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S: Likewise.
* sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S: Likewise.
* sysdeps/powerpc/powerpc64/power6/memcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/power6/memset.S: Likewise.
* sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S: Likewise.
* sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S: Likewise.
* sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/add_n.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/memchr.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/memcmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/memcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/memmove.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/mempcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/memrchr.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/memset.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/rawmemchr.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strcasecmp.S (strcasecmp_l):
Likewise.
* sysdeps/powerpc/powerpc64/power7/strchr.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strchrnul.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strcmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strlen.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strncpy.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strnlen.S: Likewise.
* sysdeps/powerpc/powerpc64/power7/strrchr.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/memcmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/memset.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/strchr.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/strcmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/strcpy.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/strlen.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/strncpy.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/strnlen.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/strrchr.S: Likewise.
* sysdeps/powerpc/powerpc64/power8/strspn.S: Likewise.
* sysdeps/powerpc/powerpc64/power9/strcmp.S: Likewise.
* sysdeps/powerpc/powerpc64/power9/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc64/strchr.S: Likewise.
* sysdeps/powerpc/powerpc64/strcmp.S: Likewise.
* sysdeps/powerpc/powerpc64/strlen.S: Likewise.
* sysdeps/powerpc/powerpc64/strncmp.S: Likewise.
* sysdeps/powerpc/powerpc64/ppc-mcount.S: Store LR earlier.  Don't
add nop when SHARED.
* sysdeps/powerpc/powerpc64/start.S: Fix comment.
* sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S (ENTRY): Don't
define.
(ENTRY_TOCLESS): Define.
* sysdeps/powerpc/powerpc32/sysdep.h (ENTRY_TOCLESS): Define.
* sysdeps/powerpc/fpu/s_fma.S: Use ENTRY_TOCLESS.
* sysdeps/powerpc/fpu/s_fmaf.S: Likewise.

103 files changed:
ChangeLog
sysdeps/powerpc/fpu/s_fma.S
sysdeps/powerpc/fpu/s_fmaf.S
sysdeps/powerpc/powerpc32/sysdep.h
sysdeps/powerpc/powerpc64/a2/memcpy.S
sysdeps/powerpc/powerpc64/addmul_1.S
sysdeps/powerpc/powerpc64/cell/memcpy.S
sysdeps/powerpc/powerpc64/dl-trampoline.S
sysdeps/powerpc/powerpc64/fpu/s_ceil.S
sysdeps/powerpc/powerpc64/fpu/s_ceilf.S
sysdeps/powerpc/powerpc64/fpu/s_copysign.S
sysdeps/powerpc/powerpc64/fpu/s_copysignl.S
sysdeps/powerpc/powerpc64/fpu/s_fabsl.S
sysdeps/powerpc/powerpc64/fpu/s_floor.S
sysdeps/powerpc/powerpc64/fpu/s_floorf.S
sysdeps/powerpc/powerpc64/fpu/s_isnan.S
sysdeps/powerpc/powerpc64/fpu/s_llrint.S
sysdeps/powerpc/powerpc64/fpu/s_llrintf.S
sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S
sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S
sysdeps/powerpc/powerpc64/fpu/s_rint.S
sysdeps/powerpc/powerpc64/fpu/s_rintf.S
sysdeps/powerpc/powerpc64/fpu/s_round.S
sysdeps/powerpc/powerpc64/fpu/s_roundf.S
sysdeps/powerpc/powerpc64/fpu/s_trunc.S
sysdeps/powerpc/powerpc64/fpu/s_truncf.S
sysdeps/powerpc/powerpc64/lshift.S
sysdeps/powerpc/powerpc64/memcpy.S
sysdeps/powerpc/powerpc64/memset.S
sysdeps/powerpc/powerpc64/mul_1.S
sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S
sysdeps/powerpc/powerpc64/power4/memcmp.S
sysdeps/powerpc/powerpc64/power4/memcpy.S
sysdeps/powerpc/powerpc64/power4/memset.S
sysdeps/powerpc/powerpc64/power4/strncmp.S
sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S
sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S
sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S
sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S
sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S
sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S
sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S
sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S
sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S
sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S
sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S
sysdeps/powerpc/powerpc64/power6/memcpy.S
sysdeps/powerpc/powerpc64/power6/memset.S
sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S
sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S
sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S
sysdeps/powerpc/powerpc64/power7/add_n.S
sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S
sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S
sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S
sysdeps/powerpc/powerpc64/power7/memchr.S
sysdeps/powerpc/powerpc64/power7/memcmp.S
sysdeps/powerpc/powerpc64/power7/memcpy.S
sysdeps/powerpc/powerpc64/power7/memmove.S
sysdeps/powerpc/powerpc64/power7/mempcpy.S
sysdeps/powerpc/powerpc64/power7/memrchr.S
sysdeps/powerpc/powerpc64/power7/memset.S
sysdeps/powerpc/powerpc64/power7/rawmemchr.S
sysdeps/powerpc/powerpc64/power7/strcasecmp.S
sysdeps/powerpc/powerpc64/power7/strchr.S
sysdeps/powerpc/powerpc64/power7/strchrnul.S
sysdeps/powerpc/powerpc64/power7/strcmp.S
sysdeps/powerpc/powerpc64/power7/strlen.S
sysdeps/powerpc/powerpc64/power7/strncmp.S
sysdeps/powerpc/powerpc64/power7/strncpy.S
sysdeps/powerpc/powerpc64/power7/strnlen.S
sysdeps/powerpc/powerpc64/power7/strrchr.S
sysdeps/powerpc/powerpc64/power7/strstr.S
sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S
sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S
sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S
sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S
sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S
sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S
sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S
sysdeps/powerpc/powerpc64/power8/memcmp.S
sysdeps/powerpc/powerpc64/power8/memset.S
sysdeps/powerpc/powerpc64/power8/strcasestr.S
sysdeps/powerpc/powerpc64/power8/strchr.S
sysdeps/powerpc/powerpc64/power8/strcmp.S
sysdeps/powerpc/powerpc64/power8/strcpy.S
sysdeps/powerpc/powerpc64/power8/strlen.S
sysdeps/powerpc/powerpc64/power8/strncmp.S
sysdeps/powerpc/powerpc64/power8/strncpy.S
sysdeps/powerpc/powerpc64/power8/strnlen.S
sysdeps/powerpc/powerpc64/power8/strrchr.S
sysdeps/powerpc/powerpc64/power8/strspn.S
sysdeps/powerpc/powerpc64/power9/strcmp.S
sysdeps/powerpc/powerpc64/power9/strncmp.S
sysdeps/powerpc/powerpc64/ppc-mcount.S
sysdeps/powerpc/powerpc64/start.S
sysdeps/powerpc/powerpc64/strchr.S
sysdeps/powerpc/powerpc64/strcmp.S
sysdeps/powerpc/powerpc64/strlen.S
sysdeps/powerpc/powerpc64/strncmp.S
sysdeps/powerpc/powerpc64/sysdep.h

index 335fe05d7c2875c7b3ae3bb8974c1e0e7d311c49..af5756112d470d73a3e6e95f56085f9c7d511792 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,117 @@
+2017-06-14  Alan Modra  <amodra@gmail.com>
+
+       * sysdeps/powerpc/powerpc64/sysdep.h: Formatting.
+       (NOPS, ENTRY_3): New macros.
+       (ENTRY): Rewrite.
+       (ENTRY_TOCLESS): Define.
+       (EALIGN, EALIGN_W_0, EALIGN_W_1, EALIGN_W_2, EALIGN_W_4, EALIGN_W_5,
+       EALIGN_W_6, EALIGN_W_7, EALIGN_W_8): Delete.
+       * sysdeps/powerpc/powerpc64/a2/memcpy.S: Replace EALIGN with ENTRY.
+       * sysdeps/powerpc/powerpc64/dl-trampoline.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_floor.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_floorf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.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/memset.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/fpu/s_isnan.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/strstr.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/fpu/e_expf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_cosf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_sinf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/strcasestr.S: Likewise.
+       * sysdeps/powerpc/powerpc64/addmul_1.S: Use ENTRY_TOCLESS.
+       * sysdeps/powerpc/powerpc64/cell/memcpy.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_copysignl.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_fabsl.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_isnan.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Likewise.
+       * sysdeps/powerpc/powerpc64/fpu/s_llrintf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/lshift.S: Likewise.
+       * sysdeps/powerpc/powerpc64/memcpy.S: Likewise.
+       * sysdeps/powerpc/powerpc64/mul_1.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power4/memcmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power4/memcpy.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power4/memset.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power4/strncmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power5+/fpu/s_ceil.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power5+/fpu/s_ceilf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power5+/fpu/s_floor.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power5+/fpu/s_floorf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power5+/fpu/s_llround.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power5+/fpu/s_round.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power5+/fpu/s_roundf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power5+/fpu/s_trunc.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power5+/fpu/s_truncf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power5/fpu/s_isnan.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power6/fpu/s_isnan.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power6/memcpy.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power6/memset.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power6x/fpu/s_isnan.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power6x/fpu/s_llrint.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power6x/fpu/s_llround.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/add_n.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/memchr.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/memcmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/memcpy.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/memmove.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/mempcpy.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/memrchr.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/memset.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/rawmemchr.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/strcasecmp.S (strcasecmp_l):
+       Likewise.
+       * sysdeps/powerpc/powerpc64/power7/strchr.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/strchrnul.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/strcmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/strlen.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/strncmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/strncpy.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/strnlen.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power7/strrchr.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_finite.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_isinf.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_isnan.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_llrint.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/memcmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/memset.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/strchr.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/strcmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/strcpy.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/strlen.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/strncmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/strncpy.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/strnlen.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/strrchr.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power8/strspn.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power9/strcmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/power9/strncmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/strchr.S: Likewise.
+       * sysdeps/powerpc/powerpc64/strcmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/strlen.S: Likewise.
+       * sysdeps/powerpc/powerpc64/strncmp.S: Likewise.
+       * sysdeps/powerpc/powerpc64/ppc-mcount.S: Store LR earlier.  Don't
+       add nop when SHARED.
+       * sysdeps/powerpc/powerpc64/start.S: Fix comment.
+       * sysdeps/powerpc/powerpc64/multiarch/strrchr-power8.S (ENTRY): Don't
+       define.
+       (ENTRY_TOCLESS): Define.
+       * sysdeps/powerpc/powerpc32/sysdep.h (ENTRY_TOCLESS): Define.
+       * sysdeps/powerpc/fpu/s_fma.S: Use ENTRY_TOCLESS.
+       * sysdeps/powerpc/fpu/s_fmaf.S: Likewise.
+
 2017-06-14  Alan Modra  <amodra@gmail.com>
 
        * sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S: Define
index e101f374bf45ce4786fc7faee2905bf75aa2985e..19d2717f516820597cf02d996dbb25bc24ca1a61 100644 (file)
@@ -18,7 +18,7 @@
 
 #include <sysdep.h>
 
-ENTRY(__fma)
+ENTRY_TOCLESS(__fma)
 /* double [f1] fma (double [f1] x, double [f2] y, double [f3] z); */
        fmadd   fp1,fp1,fp2,fp3
        blr
index 49ea298707a80e89dd4a0a50ae7f63ab83a5e81f..2b844e79372fdb5aaa0c9fa1e2276448109a3258 100644 (file)
@@ -18,7 +18,7 @@
 
 #include <sysdep.h>
 
-ENTRY(__fmaf)
+ENTRY_TOCLESS(__fmaf)
 /* float [f1] fmaf (float [f1] x, float [f2] y, float [f3] z); */
        fmadds  fp1,fp1,fp2,fp3
        blr
index f92ab2cded8955b3cd2b1c3f64967ec199783938..965ea43c94e1dd8a0b3c9274b577a6d9c2f3de5d 100644 (file)
@@ -43,6 +43,8 @@
   cfi_startproc;                                                             \
   CALL_MCOUNT
 
+#define ENTRY_TOCLESS(name) ENTRY(name)
+
 /* helper macro for accessing the 32-bit powerpc GOT. */
 
 #define        SETUP_GOT_ACCESS(regname,GOT_LABEL)                                   \
index ff30898df5fa5ce3ae4f067c62f64c1c09b35108..26846dcf68541f66bcc367c9b7ba0e3726b99772 100644 (file)
@@ -34,7 +34,7 @@
 
 
        .machine  a2
-EALIGN (MEMCPY, 5, 0)
+ENTRY (MEMCPY, 5)
        CALL_MCOUNT 3
 
        dcbt    0,r4            /* Prefetch ONE SRC cacheline  */
index b4b052141d961152c0543ac405e9a8c5566bf3ec..f463765e8bba1f9452b67f6238f0990683446370 100644 (file)
@@ -34,7 +34,7 @@
 #define N   r5
 #define VL  r6
 
-EALIGN(FUNC, 5, 0)
+ENTRY_TOCLESS (FUNC, 5)
        std     r31, -8(r1)
        rldicl. r0, N, 0, 62
        std     r30, -16(r1)
index 1cc66456e3747a1d7727bcca4795573e28442655..6e7f2b1f8f1dd1fafbdc3fd2a936934681cdc058 100644 (file)
@@ -43,7 +43,7 @@
 
 .align  7
 
-EALIGN (MEMCPY, 5, 0)
+ENTRY_TOCLESS (MEMCPY, 5)
        CALL_MCOUNT 3
 
        dcbt    0,r4            /* Prefetch ONE SRC cacheline  */
index 5ec729d1f4be2ae54f541e7c39f4f00e5fd437dc..7ceb62b1cf2f0a58a47a9ea26bdf0e57a000953c 100644 (file)
@@ -33,7 +33,7 @@
    a function that makes no calls except for __tls_get_addr and we
    might be here resolving the __tls_get_addr call.  */
 #define INT_PARMS FRAME_MIN_SIZE
-EALIGN(_dl_runtime_resolve, 4, 0)
+ENTRY (_dl_runtime_resolve, 4)
        stdu    r1,-FRAME_SIZE(r1)
        cfi_adjust_cfa_offset (FRAME_SIZE)
        std     r3,INT_PARMS+0(r1)
@@ -195,7 +195,7 @@ END(_dl_runtime_resolve)
    parm1 (r3) and the index (r0) needs to be converted to an offset
    (index * 24) in parm2 (r4).  */
 #ifndef PROF
-EALIGN(_dl_profile_resolve, 4, 0)
+ENTRY (_dl_profile_resolve, 4)
 /* Spill r30, r31 to preserve the link_map* and reloc_addr, in case we
    need to call _dl_call_pltexit.  */
        std     r31,-8(r1)
index 78d7feefed720813c1564a125c069e5156deb68f..ce673e51f0f4f07c90d53959bc2169edeca667d8 100644 (file)
@@ -24,7 +24,7 @@
        .tc FD_43300000_0[TC],0x4330000000000000
        .section        ".text"
 
-EALIGN (__ceil, 4, 0)
+ENTRY (__ceil, 4)
        CALL_MCOUNT 0
        lfd     fp13,.LC0@toc(2)
        fabs    fp0,fp1
index bc5ab02cb09c0a3be4e796d9e2ff6bdef578efe7..ee62d8a84de3d01c3f2934b574b36a233379a463 100644 (file)
@@ -25,7 +25,7 @@
        .long 0x0
        .section        ".text"
 
-EALIGN (__ceilf, 4, 0)
+ENTRY (__ceilf, 4)
        CALL_MCOUNT 0
        lfs     fp13,.LC0@toc(2)
        fabs    fp0,fp1
index 59472816c7c111df185c96bf5228a087d4444c4c..0dd9ce03da505365ad97e27d3d351f657f20b70a 100644 (file)
@@ -22,7 +22,7 @@
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
 
-ENTRY(__copysign)
+ENTRY_TOCLESS (__copysign)
        CALL_MCOUNT 0
 /* double [f1] copysign (double [f1] x, double [f2] y);
    copysign(x,y) returns a value with the magnitude of x and
index b33ea6e2568f2457b507c94d727d5277ba7e4ed0..ea0c2489ab99f1be3e8b8d13e95a1d77e4c8e422 100644 (file)
@@ -20,7 +20,7 @@
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
 
-ENTRY(__copysignl)
+ENTRY_TOCLESS (__copysignl)
 /* long double [f1,f2] copysign (long double [f1,f2] x, long double [f3,f4] y);
    copysign(x,y) returns a value with the magnitude of x and
    with the sign bit of y.  */
index 7603abba5ded39747242a5a1cfd412c9277afe64..b712e629c713f19d7346e7d8146eb4f17289db07 100644 (file)
@@ -20,7 +20,7 @@
 #include <sysdep.h>
 #include <math_ldbl_opt.h>
 
-ENTRY(__fabsl)
+ENTRY_TOCLESS (__fabsl)
 /* long double [f1,f2] fabs (long double [f1,f2] x);
    fabs(x,y) returns a value with the magnitude of x and
    with the sign bit of y.  */
index 4a6cc0ebba45d80354a0ea559136416fac99fdfb..23cea2ab5aec691966a77f9a62dc2f77a3d73a4d 100644 (file)
@@ -24,7 +24,7 @@
        .tc FD_43300000_0[TC],0x4330000000000000
        .section        ".text"
 
-EALIGN (__floor, 4, 0)
+ENTRY (__floor, 4)
        CALL_MCOUNT 0
        lfd     fp13,.LC0@toc(2)
        fabs    fp0,fp1
index d8b5e21248759793dc1def1e1255f7a3b0fb7d8f..defcab4dfa1c7233a92607de3fb854db182c2b0b 100644 (file)
@@ -25,7 +25,7 @@
        .long 0x0
        .section        ".text"
 
-EALIGN (__floorf, 4, 0)
+ENTRY (__floorf, 4)
        CALL_MCOUNT 0
        lfs     fp13,.LC0@toc(2)
        fabs    fp0,fp1
index 6cba2d4408e4fd35720c2baa2148d5d3e9211780..0ea05a0c3adc933b1158a4ac48aa17512a22928e 100644 (file)
@@ -21,7 +21,7 @@
 
 /* int __isnan(x)  */
        .machine power4
-EALIGN (__isnan, 4, 0)
+ENTRY_TOCLESS (__isnan, 4)
        CALL_MCOUNT 0
        mffs    fp0
        mtfsb0  4*cr6+lt /* reset_fpscr_bit (FPSCR_VE) */
index 39e765434a323f567b2dd78b00d830418b75434e..6893285fbb0ee099fbf2c812b1ca87df9cfd0d5c 100644 (file)
@@ -20,7 +20,7 @@
 #include <math_ldbl_opt.h>
 
 /* long long int[r3] __llrint (double x[fp1])  */
-ENTRY (__llrint)
+ENTRY_TOCLESS (__llrint)
        CALL_MCOUNT 0
        fctid   fp13,fp1
        stfd    fp13,-16(r1)
index 4050be6437aa047540313f4721c2c29e22931c40..95d437e54d48c8791d0b188134891d45c8b2aab5 100644 (file)
@@ -19,7 +19,7 @@
 #include <sysdep.h>
 
 /* long long int[r3] __llrintf (float x[fp1])  */
-ENTRY (__llrintf)
+ENTRY_TOCLESS (__llrintf)
        CALL_MCOUNT 0
        fctid   fp13,fp1
        stfd    fp13,-16(r1)
index 3dcd04b1f3d5c4d70e3fee056c8ce9e85c0da8d0..88ec253cedae94573e7a68ce6d385da2096dca1c 100644 (file)
@@ -31,7 +31,7 @@
        .tc FD_43300000_0[TC],0x4330000000000000
        .section        ".text"
 
-EALIGN (__nearbyint, 4, 0)
+ENTRY (__nearbyint, 4)
        CALL_MCOUNT 0
        fabs    fp0,fp1
        lfd     fp13,.LC0@toc(2)
index 11be35f94e4f0e7bb1d90eec1159bbe9a298de32..36212e103ea345aad0f87a550026ad967db9ee19 100644 (file)
@@ -32,7 +32,7 @@
        .long 0x0
        .section        ".text"
 
-EALIGN (__nearbyintf, 4, 0)
+ENTRY (__nearbyintf, 4)
        CALL_MCOUNT 0
        fabs    fp0,fp1
        lfs     fp13,.LC0@toc(2)
index 7ba0adff84577ca8ff8be9d9d8b6efa91cdf0b90..3543279ed4a42f548d2f312dac998170c0934bee 100644 (file)
@@ -27,7 +27,7 @@
        .tc FD_43300000_0[TC],0x4330000000000000
        .section        ".text"
 
-EALIGN (__rint, 4, 0)
+ENTRY (__rint, 4)
        CALL_MCOUNT 0
        lfd     fp13,.LC0@toc(2)
        fabs    fp0,fp1
index b1d1e158c0426750d05cb72333bd9e605a17a4b5..193cf813684f75b8e01c76999b917248d0bf174c 100644 (file)
@@ -25,7 +25,7 @@
        .long 0x0
        .section        ".text"
 
-EALIGN (__rintf, 4, 0)
+ENTRY (__rintf, 4)
        CALL_MCOUNT 0
        lfs     fp13,.LC0@toc(2)
        fabs    fp0,fp1
index fe315af51d3a3f6e4b9fa6f736d2a5611348eb6a..d10c74d037116441b760af7aa64242e585802784 100644 (file)
@@ -36,7 +36,7 @@
    "Round toward Zero" mode and round by adding +-0.5 before rounding
    to the integer value.  */
 
-EALIGN (__round, 4, 0)
+ENTRY (__round, 4)
        CALL_MCOUNT 0
        lfd     fp13,.LC0@toc(2)
        fabs    fp0,fp1
index d213f435661327000f232afc5b97ace01e379c86..18c39d54d899036d4c9bc9ff812b2d05a126cfed 100644 (file)
@@ -37,7 +37,7 @@
    "Round toward Zero" mode and round by adding +-0.5 before rounding
    to the integer value.  */
 
-EALIGN (__roundf, 4, 0)
+ENTRY (__roundf, 4)
        CALL_MCOUNT 0
        lfs     fp13,.LC0@toc(2)
        fabs    fp0,fp1
index 890eb21c542f145815a017d081d6e07c4c8a0b86..1e356dee7dc31f225b0c830b7b5f5ee7cbcd9f97 100644 (file)
@@ -31,7 +31,7 @@
    We set "round toward Zero" mode and trunc by adding +-2**52 then
    subtracting +-2**52.  */
 
-EALIGN (__trunc, 4, 0)
+ENTRY (__trunc, 4)
        CALL_MCOUNT 0
        lfd     fp13,.LC0@toc(2)
        fabs    fp0,fp1
index cfcff80bf761c0f0c9f52f5a4a3ace2398026d28..7d974f925a8c4e71df7d753b3c373db815fc9ce8 100644 (file)
@@ -32,7 +32,7 @@
    We set "round toward Zero" mode and trunc by adding +-2**23 then
    subtracting +-2**23.  */
 
-EALIGN (__truncf, 4, 0)
+ENTRY (__truncf, 4)
        CALL_MCOUNT 0
        lfs     fp13,.LC0@toc(2)
        fabs    fp0,fp1
index 480e38688bf7f14b8d0f10951462464df079fd36..e11b85d62706ac16e0c53eeb64e9d024522a4183 100644 (file)
@@ -28,7 +28,7 @@
 #define U1      r31
 #define RETVAL   r5
 
-EALIGN(__mpn_lshift, 5, 0)
+ENTRY_TOCLESS (__mpn_lshift, 5)
        std     U1, -8(r1)
        std     U0, -16(r1)
        subfic  TNC, CNT, 64
index a4c82c31ef46a7b397d00ecc0e47cba48461d387..b6a11055d882903a5a2020acd331d08cd4b13de1 100644 (file)
@@ -37,7 +37,7 @@
 # define MEMCPY memcpy
 #endif
 
-EALIGN (MEMCPY, 5, 0)
+ENTRY_TOCLESS (MEMCPY, 5)
        CALL_MCOUNT 3
 
     cmpldi cr1,5,31
index f6581b50f78526d92fca8d172d24029240e38885..34db4d7041420058ddb8ff0cfe8616f7cb3c0385 100644 (file)
@@ -35,7 +35,7 @@
 # define MEMSET memset
 #endif
 
-EALIGN (MEMSET, 5, 0)
+ENTRY (MEMSET, 5)
        CALL_MCOUNT 3
 
 #define rTMP   r0
index 68e85cbdc8d1f67d9e5120cbe40b139d16af2e79..f379180f870f86cef076462ce5ad19fa369946c5 100644 (file)
@@ -24,7 +24,7 @@
 #define N   r5
 #define VL  r6
 
-EALIGN(__mpn_mul_1, 5, 0)
+ENTRY_TOCLESS (__mpn_mul_1, 5)
        std     r27, -40(r1)
        std     r26, -48(r1)
        li      r12, 0
index a895dc6939410d8754fe848899ace2095661a61b..2b2b1de1488e84a16705ce8543927df25dcf20d0 100644 (file)
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)                                            \
-  .section ".text";                                            \
-  ENTRY_2(__strrchr_power8);                                   \
-  .align ALIGNARG(2);                                          \
-  BODY_LABEL(__strrchr_power8):                                        \
-  cfi_startproc;                                               \
-  LOCALENTRY(__strrchr_power8)
+#undef ENTRY_TOCLESS
+#ifndef PROF
+#define ENTRY_TOCLESS(name, ...)                               \
+       ENTRY_3 __strrchr_power8, ## __VA_ARGS__;               \
+       cfi_startproc
+#else
+#define ENTRY_TOCLESS(name, ...)                               \
+       ENTRY_3 __strrchr_power8, ## __VA_ARGS__;               \
+       cfi_startproc;                                          \
+       LOCALENTRY(__strrchr_power8)
+#endif
 
 #undef END
 #define END(name)                                              \
index 6ca98e909c0ca969c43a3df7618c5300935911b7..c366801d623018c6b66f953e3bbe506bfb03cbbd 100644 (file)
@@ -27,7 +27,7 @@
 #endif
 
        .machine power4
-EALIGN (MEMCMP, 4, 0)
+ENTRY_TOCLESS (MEMCMP, 4)
        CALL_MCOUNT 3
 
 #define rRTN   r3
index 2e96376b9f0d8e6ccdc071b7532ea890fcfc14e8..4bec39ce86fc843824342699a223548f829f1cd9 100644 (file)
@@ -37,7 +37,7 @@
 # define MEMCPY memcpy
 #endif
        .machine power4
-EALIGN (MEMCPY, 5, 0)
+ENTRY_TOCLESS (MEMCPY, 5)
        CALL_MCOUNT 3
 
     cmpldi cr1,5,31
index a57214e0b0be1319f99d60f9607b24d006641ebb..0aafce785bc68c167da60bc1101e1aa29a6adc88 100644 (file)
@@ -29,7 +29,7 @@
 # define MEMSET memset
 #endif
        .machine power4
-EALIGN (MEMSET, 5, 0)
+ENTRY_TOCLESS (MEMSET, 5)
        CALL_MCOUNT 3
 
 #define rTMP   r0
@@ -240,7 +240,7 @@ libc_hidden_builtin_def (memset)
 
 /* Copied from bzero.S to prevent the linker from inserting a stub
    between bzero and memset.  */
-ENTRY (__bzero)
+ENTRY_TOCLESS (__bzero)
        CALL_MCOUNT 3
        mr      r5,r4
        li      r4,0
index 2b0c00dfb251611503433146b7c45947fa211e05..2f978f64fb6929fdd3edd827acb4a3bb41db58a2 100644 (file)
@@ -26,7 +26,7 @@
 
 /* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5])  */
 
-EALIGN (STRNCMP, 4, 0)
+ENTRY_TOCLESS (STRNCMP, 4)
        CALL_MCOUNT 3
 
 #define rTMP2  r0
index 39b7ee78e5afbd59d40902bf8e0862b079bc02c1..0d09e56e4e9ab76e55d5be89b0792bf3d3ede36c 100644 (file)
@@ -20,7 +20,7 @@
 #include <math_ldbl_opt.h>
 
        .machine        "power5"
-EALIGN (__ceil, 4, 0)
+ENTRY_TOCLESS (__ceil, 4)
        CALL_MCOUNT 0
        frip    fp1, fp1
        blr
index d1c6f26d6d9e7ac69633a2ffd30b8ba10ca6ecb3..364966088c3d4c614d74d41cf2839c91d56db7b7 100644 (file)
@@ -19,7 +19,7 @@
 #include <sysdep.h>
 
        .machine        "power5"
-EALIGN (__ceilf, 4, 0)
+ENTRY_TOCLESS (__ceilf, 4)
        CALL_MCOUNT 0
        frip    fp1, fp1        /* The rounding instructions are double.  */
        frsp    fp1, fp1        /* But we need to set ooverflow for float.  */
index 6411f15633693bf8058d194a4699e3a5d928f45f..f8bfb2797e7ef37fb984f26cd166dbb6dd30a9fa 100644 (file)
@@ -20,7 +20,7 @@
 #include <math_ldbl_opt.h>
 
        .machine        "power5"
-EALIGN (__floor, 4, 0)
+ENTRY_TOCLESS (__floor, 4)
        CALL_MCOUNT 0
        frim    fp1, fp1
        blr
index 26c3b2594b8c83081f3b4b2a93d7745981900b2c..fa8a13d2a061456f0aea6c5f321778375ad36cda 100644 (file)
@@ -19,7 +19,7 @@
 #include <sysdep.h>
 
        .machine        "power5"
-EALIGN (__floorf, 4, 0)
+ENTRY_TOCLESS (__floorf, 4)
        CALL_MCOUNT 0
        frim    fp1, fp1        /* The rounding instructions are double.  */
        frsp    fp1, fp1        /* But we need to set ooverflow for float.  */
index 909714b4491c18c5f95740b9d95b8b74d786272b..4f9f850133f7717e3d267e61d74fcebd6c8c507f 100644 (file)
@@ -30,7 +30,7 @@
    round to zero instruction.  */
 
        .machine        "power5"
-EALIGN (__llround, 4, 0)
+ENTRY_TOCLESS (__llround, 4)
        CALL_MCOUNT 0
        frin    fp2, fp1        /* Round to nearest +-0.5.  */
        fctidz  fp3, fp2        /* Convert To Integer DW round toward 0.  */
index dc46d20f4fc23f96177f585a2d7b0a8a9c004c7c..0a124c80a69f3d8e7b6b637d703e5b835b50252a 100644 (file)
@@ -20,7 +20,7 @@
 #include <math_ldbl_opt.h>
 
        .machine        "power5"
-EALIGN (__round, 4, 0)
+ENTRY_TOCLESS (__round, 4)
        CALL_MCOUNT 0
        frin    fp1, fp1
        blr
index 0a587843adcda3b67e3bd525330f9aa17946c9bd..39e28b4e46df12d15f2ebb67e0240007abc075ad 100644 (file)
@@ -19,7 +19,7 @@
 #include <sysdep.h>
 
        .machine        "power5"
-EALIGN (__roundf, 4, 0)
+ENTRY_TOCLESS (__roundf, 4)
        CALL_MCOUNT 0
        frin    fp1, fp1        /* The rounding instructions are double.  */
        frsp    fp1, fp1        /* But we need to set ooverflow for float.  */
index 7f8290e4082cb04324e6563542b694c6403f34d0..5fca9f37fa5d347dce64d3ef71fe550ca061abcd 100644 (file)
@@ -20,7 +20,7 @@
 #include <math_ldbl_opt.h>
 
        .machine        "power5"
-EALIGN (__trunc, 4, 0)
+ENTRY_TOCLESS (__trunc, 4)
        CALL_MCOUNT 0
        friz    fp1, fp1
        blr
index 07f5d33127d00e876d7556303d77aba11985bc16..ced4b61d2c26f2347468c4a542899b34f727d94d 100644 (file)
@@ -19,7 +19,7 @@
 #include <sysdep.h>
 
        .machine        "power5"
-EALIGN (__truncf, 4, 0)
+ENTRY_TOCLESS (__truncf, 4)
        CALL_MCOUNT 0
        friz    fp1, fp1        /* The rounding instructions are double.  */
        frsp    fp1, fp1        /* But we need to set ooverflow for float.  */
index d6a829ea37b45d3b9b65bd316c17dbc1f2741aba..a4725f762f5edcd2ddc20303b11ddc85c9ca760e 100644 (file)
@@ -21,7 +21,7 @@
 
 /* int __isnan(x)  */
        .machine power5
-EALIGN (__isnan, 4, 0)
+ENTRY_TOCLESS (__isnan, 4)
        CALL_MCOUNT 0
        stfd    fp1,-8(r1)      /* copy FPR to GPR */
        lis     r0,0x7ff0
index ec36d1be5b42da172c1b68af49ff4ba28eed71d8..a64f1b8a0c4b66b0eb314754c78e13951b523615 100644 (file)
@@ -27,7 +27,7 @@
        .section    ".text"
        .type       __copysign, @function
        .machine    power6
-EALIGN (__copysign, 4, 0)
+ENTRY_TOCLESS (__copysign, 4)
        CALL_MCOUNT 0
        fcpsgn  fp1,fp2,fp1
        blr
index 85187b45f33a836bc74146216bf3325b916da51b..c95e4aef3b78cccfe06457ea20f9b7b94772360f 100644 (file)
@@ -21,7 +21,7 @@
 
 /* int __isnan(x)  */
        .machine power6
-EALIGN (__isnan, 4, 0)
+ENTRY_TOCLESS (__isnan, 4)
        CALL_MCOUNT 0
        stfd    fp1,-8(r1)      /* copy FPR to GPR */
        ori     r1,r1,0
index 1f7294b8ed41e5419f4d6a93a7dd3a92f235281e..ac177ca4b733a0e71d1b26935f8fcc3b714eb6b2 100644 (file)
@@ -44,7 +44,7 @@
 # define MEMCPY memcpy
 #endif
        .machine        "power6"
-EALIGN (MEMCPY, 7, 0)
+ENTRY_TOCLESS (MEMCPY, 7)
        CALL_MCOUNT 3
 
     cmpldi cr1,5,31
index aee1c8eabb382d8ca99177385c8c7f2a40288131..8bbb8c4cb19d99d02338e3365bf5e749a88f2dc9 100644 (file)
@@ -29,7 +29,7 @@
 # define MEMSET memset
 #endif
        .machine power6
-EALIGN (MEMSET, 7, 0)
+ENTRY_TOCLESS (MEMSET, 7)
        CALL_MCOUNT 3
 
 #define rTMP   r0
@@ -384,7 +384,7 @@ libc_hidden_builtin_def (memset)
 
 /* Copied from bzero.S to prevent the linker from inserting a stub
    between bzero and memset.  */
-ENTRY (__bzero)
+ENTRY_TOCLESS (__bzero)
        CALL_MCOUNT 3
        mr      r5,r4
        li      r4,0
index b6e11ba0c36eaebfcf16dece2fddadc26d5b2660..d4b011d760641f1ca81f934d0b8190991fcb8dce 100644 (file)
@@ -21,7 +21,7 @@
 
 /* int __isnan(x)  */
        .machine power6
-EALIGN (__isnan, 4, 0)
+ENTRY_TOCLESS (__isnan, 4)
        CALL_MCOUNT 0
        mftgpr  r4,fp1          /* copy FPR to GPR */
        lis     r0,0x7ff0
index 37aa69061cfc38c44948d5fa6360a32c89794755..f60d62f579b3f10aa56ad5b5c51659e51b4642e3 100644 (file)
@@ -21,7 +21,7 @@
 
        .machine        "power6"
 /* long long int[r3] __llrint (double x[fp1])  */
-ENTRY (__llrint)
+ENTRY_TOCLESS (__llrint)
        CALL_MCOUNT 0
        fctid   fp13,fp1
        mftgpr  r3,fp13
index 62e17987859145d2e78be85cde3d54f01d4183f6..6d1db555063a7c5a1df2a345ba8fbd315c8b1a69 100644 (file)
@@ -30,7 +30,7 @@
    round to zero instruction.  */
 
        .machine        "power6"
-ENTRY (__llround)
+ENTRY_TOCLESS (__llround)
        CALL_MCOUNT 0
        frin    fp2,fp1 /* Round to nearest +-0.5.  */
        fctidz  fp3,fp2 /* Convert To Integer DW round toward 0.  */
index 6425afbc9f3103eb40552034cd9482edc82c76b4..02335c1848a8e9a341aa64c8b5662d4d38d7f186 100644 (file)
@@ -36,7 +36,7 @@
 #define VP  r5
 #define N   r6
 
-EALIGN(FUNC, 5, 0)
+ENTRY_TOCLESS (FUNC, 5)
 #ifdef USE_AS_SUB
        addic   r0, r0, 0
 #else
index 9ccc758c9e3c95dbc597846f4ca44c38fda006a2..13602895732d414adbd04b5fb0d8f25896eabd58 100644 (file)
@@ -27,7 +27,7 @@
        .section    ".text"
        .type       __finite, @function
        .machine    power7
-EALIGN (__finite, 4, 0)
+ENTRY (__finite, 4)
        CALL_MCOUNT 0
        lfd     fp0,.LC0@toc(r2)
        ftdiv   cr7,fp1,fp0
index 4482cddcfa8806c1dc2e6b67d36b3e6d07239f5b..7c21c78e61885caa37f2ee598545d9a6d1ee8e5f 100644 (file)
@@ -27,7 +27,7 @@
        .section    ".text"
        .type       __isinf, @function
        .machine    power7
-EALIGN (__isinf, 4, 0)
+ENTRY (__isinf, 4)
        CALL_MCOUNT 0
        lfd     fp0,.LC0@toc(r2)
        ftdiv   cr7,fp1,fp0
index 46b08a0d3722eed9e4e360b8e6c29b0780e9896f..8a925a2f8bf3efed7dd1f577599c021c6a6fd008 100644 (file)
@@ -27,7 +27,7 @@
        .section    ".text"
        .type       __isnan, @function
        .machine    power7
-EALIGN (__isnan, 4, 0)
+ENTRY (__isnan, 4)
        CALL_MCOUNT 0
        lfd     fp0,.LC0@toc(r2)
        ftdiv   cr7,fp1,fp0
index 5e9707aa02a59a1cc1be8144d95c2758c928e25d..ec3ea62d332d306d7f2c7a705440039327195368 100644 (file)
@@ -25,7 +25,7 @@
 # define MEMCHR __memchr
 #endif
        .machine  power7
-ENTRY (MEMCHR)
+ENTRY_TOCLESS (MEMCHR)
        CALL_MCOUNT 3
        dcbt    0,r3
        clrrdi  r8,r3,3
index 96ce8cee25620aec6383a698ea9a7db6a5902ed7..bee0424ba56ffc3202352f5fe7f22870ec5303d9 100644 (file)
@@ -25,7 +25,7 @@
 # define MEMCMP memcmp
 #endif
        .machine power7
-EALIGN (MEMCMP, 4, 0)
+ENTRY_TOCLESS (MEMCMP, 4)
        CALL_MCOUNT 3
 
 #define rRTN           r3
index e08993cbc3d7efa828fb90225588646744bf6744..641c7e21184a3e07a9301e92c925dd9dfbef4f6a 100644 (file)
@@ -32,7 +32,7 @@
 #define cnt 5
 
        .machine power7
-EALIGN (MEMCPY, 5, 0)
+ENTRY_TOCLESS (MEMCPY, 5)
        CALL_MCOUNT 3
 
        cmpldi  cr1,cnt,31
index 4c0f7c3571e7db0d7d25af44737663f7778b85a9..93baa69ee26c61328384dbba3d661eb072248506 100644 (file)
@@ -31,7 +31,7 @@
 # define MEMMOVE memmove
 #endif
        .machine power7
-EALIGN (MEMMOVE, 5, 0)
+ENTRY_TOCLESS (MEMMOVE, 5)
        CALL_MCOUNT 3
 
 L(_memmove):
@@ -826,7 +826,7 @@ libc_hidden_builtin_def (memmove)
 /* void bcopy(const void *src [r3], void *dest [r4], size_t n [r5])
    Implemented in this file to avoid linker create a stub function call
    in the branch to '_memmove'.  */
-ENTRY (__bcopy)
+ENTRY_TOCLESS (__bcopy)
        mr      r6,r3
        mr      r3,r4
        mr      r4,r6
index 4e15d1e40cdad23b93d550297e8e4172d3087765..904fac5d1c42821ec0780b0efe99773c382c6dd5 100644 (file)
@@ -27,7 +27,7 @@
 # define MEMPCPY __mempcpy
 #endif
        .machine  power7
-EALIGN (MEMPCPY, 5, 0)
+ENTRY_TOCLESS (MEMPCPY, 5)
        CALL_MCOUNT 3
 
        cmpldi  cr1,5,31
index 427676891541c38c178bf1432e47c5de2eb505e0..92b9d1976dd442b07c838adbc81a0cb4761c185e 100644 (file)
@@ -25,7 +25,7 @@
 # define MEMRCHR __memrchr
 #endif
        .machine  power7
-ENTRY (MEMRCHR)
+ENTRY_TOCLESS (MEMRCHR)
        CALL_MCOUNT 3
        add     r7,r3,r5      /* Calculate the last acceptable address.  */
        neg     r0,r7
index 21933c06725713628f03fa86dd858aa3c4be422f..f2e2fa1b37715dcbfc903be1c4f5aeb39382bd91 100644 (file)
@@ -26,7 +26,7 @@
 # define MEMSET memset
 #endif
        .machine power7
-EALIGN (MEMSET, 5, 0)
+ENTRY_TOCLESS (MEMSET, 5)
        CALL_MCOUNT 3
 
 L(_memset):
@@ -388,7 +388,7 @@ libc_hidden_builtin_def (memset)
 
 /* Copied from bzero.S to prevent the linker from inserting a stub
    between bzero and memset.  */
-ENTRY (__bzero)
+ENTRY_TOCLESS (__bzero)
        CALL_MCOUNT 3
        mr      r5,r4
        li      r4,0
index 48afb759430268890b63d6a2b12bde1dc690b70b..86ea4a68bc72ec359bbb099ca923b63c9b992af0 100644 (file)
@@ -25,7 +25,7 @@
 # define RAWMEMCHR __rawmemchr
 #endif
        .machine  power7
-ENTRY (RAWMEMCHR)
+ENTRY_TOCLESS (RAWMEMCHR)
        CALL_MCOUNT 2
        dcbt    0,r3
        clrrdi  r8,r3,3       /* Align the address to doubleword boundary.  */
index e856b8a5930f4590571f0688150c3ff073d2bac7..224318720e4f970e40573b1b4b14e45e5f4a25a8 100644 (file)
 # define STRCMP   strcasecmp
 #endif
 
-ENTRY (__STRCMP)
 #ifndef USE_IN_EXTENDED_LOCALE_MODEL
+ENTRY (__STRCMP)
        CALL_MCOUNT 2
 #else
+ENTRY_TOCLESS (__STRCMP)
        CALL_MCOUNT 3
 #endif
 
index a18e2e101c8b6a0a9ed4ad5ebdea3274c112f942..1d53dbe3b526c5f0f394a3383b551a48bff3cec4 100644 (file)
@@ -25,7 +25,7 @@
 
 /* int [r3] strchr (char *s [r3], int c [r4])  */
        .machine  power7
-ENTRY (STRCHR)
+ENTRY_TOCLESS (STRCHR)
        CALL_MCOUNT 2
        dcbt    0,r3
        clrrdi  r8,r3,3       /* Align the address to doubleword boundary.  */
index 27bc1f0682a09f016457b9f2cf24290ee1fb0f56..eb69953376ba7197ffe938a8341984e5453346bc 100644 (file)
@@ -24,7 +24,7 @@
 #endif
 /* int [r3] strchrnul (char *s [r3], int c [r4])  */
        .machine  power7
-ENTRY (STRCHRNUL)
+ENTRY_TOCLESS (STRCHRNUL)
        CALL_MCOUNT 2
        dcbt    0,r3
        clrrdi  r8,r3,3       /* Align the address to doubleword boundary.  */
index 14e14f457e376c7e1c900ae77e9ccf54c6ec10bd..69b1ff9b0ab0d1bfe73155743e5a5d3284bcd253 100644 (file)
@@ -30,7 +30,7 @@
 /* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])  */
 
        .machine        power7
-EALIGN (STRCMP, 4, 0)
+ENTRY_TOCLESS (STRCMP, 4)
        CALL_MCOUNT 2
 
        or r9, r3, r4
index 63848c460c85f5d1e425d3ef2414ca688fa7a0b3..317dad5fa9a15d952fde7fb8cea2d7e348d1f2c1 100644 (file)
@@ -25,7 +25,7 @@
 # define STRLEN strlen
 #endif
        .machine  power7
-ENTRY (STRLEN)
+ENTRY_TOCLESS (STRLEN)
        CALL_MCOUNT 1
        dcbt    0,r3
        clrrdi  r4,r3,3       /* Align the address to doubleword boundary.  */
index d53b31be8e5f2b5a50dedaac01cf7cfc156c6e16..ffe7e8e68783e6800edd3da783df60eef8acb2f8 100644 (file)
@@ -28,7 +28,7 @@
                     const char *s2 [r4],
                     size_t size [r5])  */
 
-EALIGN (STRNCMP,5,0)
+ENTRY_TOCLESS (STRNCMP, 5)
        CALL_MCOUNT 3
 
 #define rTMP2  r0
index 88d797908ce90cfc31ae3d14b7d1111ea6dd000b..b2833b8a503ddbfd054ed5cfabd51c484d3e380f 100644 (file)
 #endif
 
        .machine  power7
-EALIGN(FUNC_NAME, 4, 0)
+#ifdef MEMSET_is_local
+ENTRY_TOCLESS (FUNC_NAME, 4)
+#else
+ENTRY (FUNC_NAME, 4)
+#endif
        CALL_MCOUNT 3
 
        mflr r0                 /* load link register LR to r0  */
index a970b6ce30a40b641702702e3e59b428af03defd..0ee659fd3751cb2508d40d093be9277c680328ac 100644 (file)
@@ -25,7 +25,7 @@
 
 /* int [r3] strnlen (char *s [r3], int size [r4])  */
        .machine  power7
-ENTRY (STRNLEN)
+ENTRY_TOCLESS (STRNLEN)
        CALL_MCOUNT 2
        dcbt    0,r3
        clrrdi  r8,r3,3
index c22393deb5f9ddb61b24b038a2ed2b005aa7caf7..98310e4c23f7def98af7470967c5d910900b779d 100644 (file)
@@ -25,7 +25,7 @@
 #endif
 
        .machine  power7
-ENTRY (STRRCHR)
+ENTRY_TOCLESS (STRRCHR)
        CALL_MCOUNT 2
        dcbt    0,r3
        clrrdi  r8,r3,3       /* Align the address to doubleword boundary.  */
index 1c432534a363a0b11d404aec8dd4834743c9f798..c2d727d8b4a083c63f0eb3aea4f72a4fc22c6417 100644 (file)
@@ -62,7 +62,8 @@
 
 #define        FRAMESIZE       (FRAME_MIN_SIZE+32)
        .machine  power7
-EALIGN (STRSTR, 4, 0)
+/* Can't be ENTRY_TOCLESS due to calling __strstr_ppc which uses r2.  */
+ENTRY (STRSTR, 4)
        CALL_MCOUNT 2
        mflr    r0                      /* Load link register LR to r0.  */
        std     r31, -8(r1)             /* Save callers register r31.  */
index 4c42926a74dc6b7c0b12f348cb603792a4e8eaa1..d9433d88e494a424df3169e3006e1d959cb30916 100644 (file)
@@ -55,7 +55,7 @@
    float [fp1] expf (float [fp1] x)  */
 
        .machine power8
-EALIGN(__ieee754_expf, 4, 0)
+ENTRY (__ieee754_expf, 4)
        addis   DATA_OFFSET,r2,.Lanchor@toc@ha
        addi    DATA_OFFSET,DATA_OFFSET,.Lanchor@toc@l
 
index 8dfa0076e0f00c8eaa187c916d38875acf2c5db1..d45496d3b3b891d32063571c6003369a2d456478 100644 (file)
@@ -39,7 +39,7 @@
           float [fp1] cosf (float [fp1] x)  */
 
        .machine power8
-EALIGN(__cosf, 4, 0)
+ENTRY (__cosf, 4)
        addis   r9,r2,L(anchor)@toc@ha
        addi    r9,r9,L(anchor)@toc@l
 
index fcdcb6029370440a17f47a291ff36fc1c8e0a16a..80181b74f7fdc609c6975b2aadffddb1dfc016c0 100644 (file)
@@ -23,7 +23,7 @@
 
 /* int [r3] __finite ([fp1] x)  */
 
-EALIGN (__finite, 4, 0)
+ENTRY_TOCLESS (__finite, 4)
        CALL_MCOUNT 0
        MFVSRD_R3_V1
        lis     r9,0x8010
index 32814e4525e3666f21c733e4b725679fd546be5f..01f57a8dbf1c0a3940dc0bad7d1413f1c804e1ed 100644 (file)
@@ -23,7 +23,7 @@
 
 /* int [r3] __isinf([fp1] x)  */
 
-EALIGN (__isinf, 4, 0)
+ENTRY_TOCLESS (__isinf, 4)
        CALL_MCOUNT 0
        MFVSRD_R3_V1
        lis     r9,0x7ff0     /* r9 = 0x7ff0  */
index af52e502b74ce9fb4ff3f20f482c1980e29fb03b..87be552fe6669abb85b1b92138126a16b1b3bded 100644 (file)
@@ -23,7 +23,7 @@
 
 /* int [r3] __isnan([f1] x)  */
 
-EALIGN (__isnan, 4, 0)
+ENTRY_TOCLESS (__isnan, 4)
        CALL_MCOUNT 0
        MFVSRD_R3_V1
        lis     r9,0x7ff0
index aa180b69012659329595679e35024ee0935e2386..6980abcc4f082d08522cbeaa57694309a4311fbe 100644 (file)
@@ -22,7 +22,7 @@
 #define MFVSRD_R3_V1  .long 0x7c230066     /* mfvsrd  r3,vs1  */
 
 /* long long int[r3] __llrint (double x[fp1])  */
-ENTRY (__llrint)
+ENTRY_TOCLESS (__llrint)
        CALL_MCOUNT 0
        fctid   fp1,fp1
        MFVSRD_R3_V1
index 043fc6a0897a0647a766f2eeedbbfcf51c372d0f..8bdc162752d5feccb0bff7d231ca4dea29aaf3fd 100644 (file)
@@ -24,7 +24,7 @@
 
 /* long long [r3] llround (float x [fp1])  */
 
-ENTRY (__llround)
+ENTRY_TOCLESS (__llround)
        CALL_MCOUNT 0
        frin    fp1,fp1 /* Round to nearest +-0.5.  */
        fctidz  fp1,fp1 /* Convert To Integer DW round toward 0.  */
index fb0add3462e61742019934eeee829453472e1f52..d5335d8d57e3164ea0e87209a71bf2cc6f752f2e 100644 (file)
@@ -39,7 +39,7 @@
           float [fp1] sinf (float [fp1] x)  */
 
        .machine power8
-EALIGN(__sinf, 4, 0)
+ENTRY (__sinf, 4)
        addis   r9,r2,L(anchor)@toc@ha
        addi    r9,r9,L(anchor)@toc@l
 
index 46b9c0067ad7cd74a36c4800ebfe03eb1be0311e..ba8cd1383197ef4b10a2bb4b094723dbe12355ce 100644 (file)
@@ -29,7 +29,7 @@
 # define MEMCMP memcmp
 #endif
        .machine power7
-EALIGN (MEMCMP, 4, 0)
+ENTRY_TOCLESS (MEMCMP, 4)
        CALL_MCOUNT 3
 
 #define rRTN           r3
index bc734c9f4fd7e89b3a8ddce9e8f3e6a1abe40487..7ad3bb1b000eef9bcb1fb826e8ceffb9e5fe8646 100644 (file)
@@ -31,7 +31,7 @@
           handled by the define.  It avoid breakage on binutils
           that does not support this machine specifier.  */
        .machine power7
-EALIGN (MEMSET, 5, 0)
+ENTRY_TOCLESS (MEMSET, 5)
        CALL_MCOUNT 3
 
 L(_memset):
@@ -447,7 +447,7 @@ libc_hidden_builtin_def (memset)
 
 /* Copied from bzero.S to prevent the linker from inserting a stub
    between bzero and memset.  */
-ENTRY (__bzero)
+ENTRY_TOCLESS (__bzero)
        CALL_MCOUNT 3
        mr      r5,r4
        li      r4,0
index 6ac6572f3becf944e10bb3050eea9355b428143f..3f59cb0f688cc449728979f827194768eb44da8e 100644 (file)
@@ -85,7 +85,7 @@
 /* TODO: change this to .machine power8 when the minimum required binutils
    allows it.  */
        .machine  power7
-EALIGN (STRCASESTR, 4, 0)
+ENTRY (STRCASESTR, 4)
        CALL_MCOUNT 2
        mflr    r0                      /* Load link register LR to r0.  */
        std     r31, -8(r1)             /* Save callers register r31.  */
index e0c185c1624225cd7b972f31c30bcebe1b150910..63f75330e0a709eaec21d0fbbda7a870ef218b69 100644 (file)
@@ -44,7 +44,7 @@
 /* TODO: change this to .machine power8 when the minimum required binutils
    allows it.  */
        .machine  power7
-ENTRY (FUNC_NAME)
+ENTRY_TOCLESS (FUNC_NAME)
        CALL_MCOUNT 2
        dcbt    0,r3
        clrrdi  r8,r3,3       /* Align the address to doubleword boundary.  */
index 770484f1e160440a0b5148ccd6f25a91596cbd7a..ff19f7f64a14f365c12cc0413c5451ddcda958c7 100644 (file)
@@ -31,7 +31,7 @@
    64K as default, the page cross handling assumes minimum page size of
    4k.  */
 
-EALIGN (STRCMP, 4, 0)
+ENTRY_TOCLESS (STRCMP, 4)
        li      r0,0
 
        /* Check if [s1]+16 or [s2]+16 will cross a 4K page boundary using
index 7f2cee4b1b13c9da9a5cfa16338ab062cb208d8b..13e7a0fcbc169f70d9d4ae407086a9581ea9c6ec 100644 (file)
@@ -48,7 +48,7 @@
    4k.  */
 
        .machine  power7
-EALIGN (FUNC_NAME, 4, 0)
+ENTRY_TOCLESS (FUNC_NAME, 4)
         li      r0,0          /* Doubleword with null chars to use
                                  with cmpb.  */
 
index 8f4a1fc1dc6f8c3a16c4eec34d904be1f39e8b83..8fdb6f5cc18e952dfe88e2907338cc52013ae941 100644 (file)
@@ -36,7 +36,7 @@
 /* TODO: change this to .machine power8 when the minimum required binutils
    allows it.  */
        .machine  power7
-EALIGN (STRLEN, 4, 0)
+ENTRY_TOCLESS (STRLEN, 4)
        CALL_MCOUNT 1
        dcbt    0,r3
        clrrdi  r4,r3,3       /* Align the address to doubleword boundary.  */
index 3d8df9053885b62b48db9dd9255992c8ddb99eb1..84bfcb1f1cfb41923167341d41a584901f35d4a0 100644 (file)
@@ -32,7 +32,7 @@
    4k.  */
 
        .machine  power7
-EALIGN (STRNCMP, 4, 0)
+ENTRY_TOCLESS (STRNCMP, 4)
        /* Check if size is 0.  */
        mr.     r10,r5
        beq     cr0,L(ret0)
index 552c5cc577ed8e36b862f9514be982debab660cc..150290ae4a35b4d7b76e6d0c2a7d2df1c85ff83b 100644 (file)
    4k.  */
 
        .machine  power7
-EALIGN (FUNC_NAME, 4, 0)
+#ifdef MEMSET_is_local
+ENTRY_TOCLESS (FUNC_NAME, 4)
+#else
+ENTRY (FUNC_NAME, 4)
+#endif
        CALL_MCOUNT 3
 
         /* Check if the [src]+15 will cross a 4K page by checking if the bit
index 3eadbfb09e21c9d10e0a9497afcc2fcfd5125c4c..07608ffa26e1e228bc31dc4bb3b0ef1349540e94 100644 (file)
@@ -59,7 +59,7 @@
 /* int [r3] strnlen (char *s [r3], size_t maxlen [r4])  */
 /* TODO: change to power8 when minimum required binutils allows it.  */
        .machine  power7
-ENTRY (__strnlen)
+ENTRY_TOCLESS (__strnlen)
        CALL_MCOUNT 2
        dcbt    0,r3
 
index 8eb74853c3c37b1a76014367e0dfaec27a4d734d..0ba61389a750ef06f71094d324429a5dd9b54b87 100644 (file)
@@ -77,7 +77,7 @@
        vsumsws v2, v2, v0;
 #endif /* !__LITTLE_ENDIAN__  */
        .machine  power7
-ENTRY (strrchr)
+ENTRY_TOCLESS (strrchr)
        CALL_MCOUNT 2
        dcbt    0,r3
        clrrdi  r8,r3,3       /* Align the address to doubleword boundary.  */
index e9271898f21a540e2e6dcffeba447884a4a75e03..dcd1df425c7754151bff117c00b9375c15180ee3 100644 (file)
@@ -68,7 +68,7 @@
        /* This can be updated to power8 once the minimum version of
           binutils supports power8 and the above instructions.  */
        .machine power7
-EALIGN(STRSPN, 4, 0)
+ENTRY_TOCLESS (STRSPN, 4)
        CALL_MCOUNT 2
 
        /* Generate useful constants for later on.  */
index 2dc4f6c722873de9814f9693f6bf1cae408d19f0..87883ef0c80cc019980773cc7060a7c5c418ab78 100644 (file)
@@ -66,7 +66,7 @@
    allows it.  */
 
        .machine  power7
-EALIGN (STRCMP, 4, 0)
+ENTRY_TOCLESS (STRCMP, 4)
        li      r0, 0
 
        /* Check if [s1]+16 or [s2]+16 will cross a 4K page boundary using
index c946a5c6387800f0d6b512cd29a2cc475cb4f33e..ff6f8aceebf3c592bd5916f2902eaa7136b3b792 100644 (file)
@@ -68,7 +68,7 @@
 /* TODO: change this to .machine power9 when minimum binutils
    is upgraded to 2.27.  */
        .machine  power7
-EALIGN (STRNCMP, 4, 0)
+ENTRY_TOCLESS (STRNCMP, 4)
        /* Check if size is 0.  */
        cmpdi   cr0, r5, 0
        beq     cr0, L(ret0)
index 8312f46644e3acc5690666fb8d990642b62de4cc..693621104a3da66de45c2d94fa42b508f8650032 100644 (file)
 ENTRY(_mcount)
        mflr             r4
        ld               r11, 0(r1)
+       std              r4, FRAME_LR_SAVE(r1)
        stdu             r1,-FRAME_MIN_SIZE(r1)
        cfi_adjust_cfa_offset (FRAME_MIN_SIZE)
-       std              r4, FRAME_MIN_SIZE+FRAME_LR_SAVE(r1)
        cfi_offset (lr, FRAME_LR_SAVE)
        ld               r3, FRAME_LR_SAVE(r11)
        bl               JUMPTARGET(__mcount_internal)
+#ifndef SHARED
        nop
+#endif
        ld               r0, FRAME_MIN_SIZE+FRAME_LR_SAVE(r1)
        mtlr             r0
        addi             r1,r1,FRAME_MIN_SIZE
index 937c39a7404234e1856ce9f3394c15780c2588ac..05ed67e5b8a6ce913cc142e0f8dd0942b1261fc8 100644 (file)
@@ -62,7 +62,7 @@ L(start_addresses):
 .L01:
        .tc     L(start_addresses)[TC],L(start_addresses)
        .section ".text"
-ENTRY(_start)
+ENTRY (_start)
  /* Save the stack pointer, in case we're statically linked under Linux.  */
        mr      r9,r1
  /* Set up an initial stack frame, and clear the LR.  */
@@ -78,7 +78,7 @@ ENTRY(_start)
 
  /* and continue in libc-start, in glibc.  */
        b       JUMPTARGET(__libc_start_main)
-/* The linker needs this nop to recognize that it's OK to call via a
+/* Older versions of ld need this nop to recognize that it's OK to call via a
    TOC adjusting stub.  */
        nop
 
index cbfcc14cfecff5ab058955fbf1cac5e9def58df3..c0ddb00bbd7e7cbd4cbb7a063edeafe7e59508cb 100644 (file)
@@ -26,7 +26,7 @@
 # define STRCHR strchr
 #endif
 
-ENTRY (STRCHR)
+ENTRY_TOCLESS (STRCHR)
        CALL_MCOUNT 2
 
 #define rTMP1  r0
index ab5f8c231cbfc52b4748cdee93dd317e73e17605..69b953fc7bd51127dab7009e9271f5a89683e0ea 100644 (file)
@@ -26,7 +26,7 @@
 # define STRCMP strcmp
 #endif
 
-EALIGN (STRCMP, 4, 0)
+ENTRY_TOCLESS (STRCMP, 4)
        CALL_MCOUNT 2
 
 #define rTMP2  r0
index 1466624c6a68dec2efe9bd6e31973c4bf42b12f9..0d8a38b0cdc7e4582cbb1aa81b07f315a626ee35 100644 (file)
@@ -84,7 +84,7 @@
 # define STRLEN strlen
 #endif
 
-ENTRY (STRLEN)
+ENTRY_TOCLESS (STRLEN)
        CALL_MCOUNT 1
 
 #define rTMP4  r0
index 076599804a58d17368fc56834b7a1ac92fbb0be6..c314293e8103c8373332fd6147f104893cb0ab0f 100644 (file)
@@ -26,7 +26,7 @@
 # define STRNCMP strncmp
 #endif
 
-EALIGN (STRNCMP, 4, 0)
+ENTRY_TOCLESS (STRNCMP, 4)
        CALL_MCOUNT 3
 
 #define rTMP2  r0
index 860420ea2d9ace32619f3a8f1ee47dfa9602400b..ab5f395cfd0db8be9f554da9ddf805ff7a1eadb9 100644 (file)
 
 #endif /* _CALL_ELF */
 
-#define ENTRY(name)    \
-       .section        ".text";                \
-       ENTRY_2(name);                          \
-       .align ALIGNARG(2);                     \
-BODY_LABEL(name):                              \
-       cfi_startproc;                          \
-       LOCALENTRY(name)
+       .macro NOPS NARG
+       .if \NARG
+       NOPS \NARG-1
+       nop
+       .endif
+       .endm
 
-#define EALIGN_W_0  /* No words to insert.  */
-#define EALIGN_W_1  nop
-#define EALIGN_W_2  nop;nop
-#define EALIGN_W_3  nop;nop;nop
-#define EALIGN_W_4  EALIGN_W_3;nop
-#define EALIGN_W_5  EALIGN_W_4;nop
-#define EALIGN_W_6  EALIGN_W_5;nop
-#define EALIGN_W_7  EALIGN_W_6;nop
-
-/* EALIGN is like ENTRY, but does alignment to 'words'*4 bytes
-   past a 2^alignt boundary.  */
-#define EALIGN(name, alignt, words) \
-       .section        ".text";                \
-       ENTRY_2(name);                          \
-       .align ALIGNARG(alignt);                \
-       EALIGN_W_##words;                       \
-BODY_LABEL(name):                              \
+       .macro ENTRY_3 name, alignp2=2, nopwords=0
+       .text
+       ENTRY_2(\name)
+       .p2align \alignp2
+       NOPS \nopwords
+BODY_LABEL(\name):
+       .endm
+
+/* Use ENTRY_TOCLESS for functions that make no use of r2 and
+   guarantee r2 is unchanged on exit.  Any function that has @toc or
+   @got relocs uses r2.  Functions that call other functions via the
+   PLT use r2.  Use ENTRY for functions that may use or change r2.
+   The first argument is the function name.
+   The optional second argument specifies alignment of the function's
+   code, as the logarithm base two of the byte alignment.  For
+   example, a value of four aligns to a sixteen byte boundary.
+   The optional third argument specifies the number of NOPs to emit
+   before the start of the function's code.   */
+#ifndef PROF
+#define ENTRY_TOCLESS(name, ...)               \
+       ENTRY_3 name, ## __VA_ARGS__;           \
+       cfi_startproc
+
+#define ENTRY(name, ...)                       \
+       ENTRY_TOCLESS(name, ## __VA_ARGS__);    \
+       LOCALENTRY(name)
+#else
+/* The call to _mcount is potentially via the plt, so profiling code
+   is never free of an r2 use.  */
+#define ENTRY_TOCLESS(name, ...)               \
+       ENTRY_3 name, ## __VA_ARGS__;           \
        cfi_startproc;                          \
        LOCALENTRY(name)
 
+#define ENTRY(name, ...)                       \
+       ENTRY_TOCLESS(name, ## __VA_ARGS__)
+#endif
+
 /* Local labels stripped out by the linker.  */
 #undef L
 #define L(x) .L##x
This page took 0.216231 seconds and 5 git commands to generate.