aboutsummaryrefslogtreecommitdiff
path: root/contrib/guix/patches/glibc-2.27-powerpc-ldbrx.patch
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/guix/patches/glibc-2.27-powerpc-ldbrx.patch')
-rw-r--r--contrib/guix/patches/glibc-2.27-powerpc-ldbrx.patch245
1 files changed, 0 insertions, 245 deletions
diff --git a/contrib/guix/patches/glibc-2.27-powerpc-ldbrx.patch b/contrib/guix/patches/glibc-2.27-powerpc-ldbrx.patch
deleted file mode 100644
index 26716054c8..0000000000
--- a/contrib/guix/patches/glibc-2.27-powerpc-ldbrx.patch
+++ /dev/null
@@ -1,245 +0,0 @@
-From 50b0b3c9ff71ffd7ebbd74ae46844c3566478123 Mon Sep 17 00:00:00 2001
-From: "Gabriel F. T. Gomes" <gabrielftg@linux.ibm.com>
-Date: Mon, 27 May 2019 15:21:22 -0300
-Subject: [PATCH] powerpc: Fix build failures with current GCC
-
-Since GCC commit 271500 (svn), also known as the following commit on the
-git mirror:
-
-commit e154242724b084380e3221df7c08fcdbd8460674
-Author: amodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Wed May 22 04:34:26 2019 +0000
-
- [RS6000] Don't pass -many to the assembler
-
-glibc builds are failing when an assembly implementation does not
-declare the correct '.machine' directive, or when no such directive is
-declared at all. For example, when a POWER6 instruction is used, but
-'.machine power6' is not declared, the assembler will fail with an error
-similar to the following:
-
- ../sysdeps/powerpc/powerpc64/power8/strcmp.S: Assembler messages:
- 24 ../sysdeps/powerpc/powerpc64/power8/strcmp.S:55: Error: unrecognized opcode: `cmpb'
-
-This patch adds '.machine powerN' directives where none existed, as well
-as it updates '.machine power7' directives on POWER8 files, because the
-minimum binutils version required to build glibc (binutils 2.25) now
-provides this machine version. It also adds '-many' to the assembler
-command used to build tst-set_ppr.c.
-
-Tested for powerpc, powerpc64, and powerpc64le, as well as with
-build-many-glibcs.py for powerpc targets.
-
-Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
----
- sysdeps/powerpc/Makefile | 5 +++
- sysdeps/powerpc/powerpc64/power4/memcmp.S | 7 ++++
- sysdeps/powerpc/powerpc64/power7/strncmp.S | 1 +
- .../powerpc/powerpc64/power8/fpu/s_llround.S | 1 +
- sysdeps/powerpc/powerpc64/power8/strcasecmp.S | 36 ++++++-------------
- sysdeps/powerpc/powerpc64/power8/strcasestr.S | 14 ++------
- sysdeps/powerpc/powerpc64/power8/strcmp.S | 1 +
- 7 files changed, 28 insertions(+), 37 deletions(-)
-
-diff --git a/sysdeps/powerpc/Makefile b/sysdeps/powerpc/Makefile
-index 6aa683b03f..23126147df 100644
---- a/sysdeps/powerpc/Makefile
-+++ b/sysdeps/powerpc/Makefile
-@@ -45,6 +45,11 @@ ifeq ($(subdir),misc)
- sysdep_headers += sys/platform/ppc.h
- tests += test-gettimebase
- tests += tst-set_ppr
-+
-+# This test is expected to run and exit with EXIT_UNSUPPORTED on
-+# processors that do not implement the Power ISA 2.06 or greater.
-+# But the test makes use of instructions from Power ISA 2.06 and 2.07.
-+CFLAGS-tst-set_ppr.c += -Wa,-many
- endif
-
- ifneq (,$(filter %le,$(config-machine)))
-diff --git a/sysdeps/powerpc/powerpc64/power4/memcmp.S b/sysdeps/powerpc/powerpc64/power4/memcmp.S
-index e5319f101f..38dcf4c9a1 100644
---- a/sysdeps/powerpc/powerpc64/power4/memcmp.S
-+++ b/sysdeps/powerpc/powerpc64/power4/memcmp.S
-@@ -26,7 +26,14 @@
- # define MEMCMP memcmp
- #endif
-
-+#ifndef __LITTLE_ENDIAN__
- .machine power4
-+#else
-+/* Little endian is only available since POWER8, so it's safe to
-+ specify .machine as power8 (or older), even though this is a POWER4
-+ file. Since the little-endian code uses 'ldbrx', power7 is enough. */
-+ .machine power7
-+#endif
- ENTRY_TOCLESS (MEMCMP, 4)
- CALL_MCOUNT 3
-
-diff --git a/sysdeps/powerpc/powerpc64/power7/strncmp.S b/sysdeps/powerpc/powerpc64/power7/strncmp.S
-index 0c7429d19f..10f898c5a3 100644
---- a/sysdeps/powerpc/powerpc64/power7/strncmp.S
-+++ b/sysdeps/powerpc/powerpc64/power7/strncmp.S
-@@ -28,6 +28,7 @@
- const char *s2 [r4],
- size_t size [r5]) */
-
-+ .machine power7
- ENTRY_TOCLESS (STRNCMP, 5)
- CALL_MCOUNT 3
-
-diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S b/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
-index a22fc63bb3..84c76ba0f9 100644
---- a/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
-+++ b/sysdeps/powerpc/powerpc64/power8/fpu/s_llround.S
-@@ -26,6 +26,7 @@
-
- /* long long [r3] llround (float x [fp1]) */
-
-+ .machine power8
- ENTRY_TOCLESS (__llround)
- CALL_MCOUNT 0
- frin fp1,fp1 /* Round to nearest +-0.5. */
-diff --git a/sysdeps/powerpc/powerpc64/power8/strcasecmp.S b/sysdeps/powerpc/powerpc64/power8/strcasecmp.S
-index 3a2efe2a64..eeacd40c7f 100644
---- a/sysdeps/powerpc/powerpc64/power8/strcasecmp.S
-+++ b/sysdeps/powerpc/powerpc64/power8/strcasecmp.S
-@@ -91,21 +91,7 @@
- 3: \
- TOLOWER()
-
--#ifdef _ARCH_PWR8
--# define VCLZD_V8_v7 vclzd v8, v7;
--# define MFVRD_R3_V1 mfvrd r3, v1;
--# define VSUBUDM_V9_V8 vsubudm v9, v9, v8;
--# define VPOPCNTD_V8_V8 vpopcntd v8, v8;
--# define VADDUQM_V7_V8 vadduqm v9, v7, v8;
--#else
--# define VCLZD_V8_v7 .long 0x11003fc2
--# define MFVRD_R3_V1 .long 0x7c230067
--# define VSUBUDM_V9_V8 .long 0x112944c0
--# define VPOPCNTD_V8_V8 .long 0x110047c3
--# define VADDUQM_V7_V8 .long 0x11274100
--#endif
--
-- .machine power7
-+ .machine power8
-
- ENTRY (__STRCASECMP)
- #ifdef USE_AS_STRNCASECMP
-@@ -265,15 +251,15 @@ L(different):
- #ifdef __LITTLE_ENDIAN__
- /* Count trailing zero. */
- vspltisb v8, -1
-- VADDUQM_V7_V8
-+ vadduqm v9, v7, v8
- vandc v8, v9, v7
-- VPOPCNTD_V8_V8
-+ vpopcntd v8, v8
- vspltb v6, v8, 15
- vcmpequb. v6, v6, v1
- blt cr6, L(shift8)
- #else
- /* Count leading zero. */
-- VCLZD_V8_v7
-+ vclzd v8, v7
- vspltb v6, v8, 7
- vcmpequb. v6, v6, v1
- blt cr6, L(shift8)
-@@ -291,7 +277,7 @@ L(skipsum):
- /* Merge and move to GPR. */
- vmrglb v6, v6, v7
- vslo v1, v6, v1
-- MFVRD_R3_V1
-+ mfvrd r3, v1
- /* Place the characters that are different in first position. */
- sldi rSTR2, rRTN, 56
- srdi rSTR2, rSTR2, 56
-@@ -301,7 +287,7 @@ L(skipsum):
- vslo v6, v5, v8
- vslo v7, v4, v8
- vmrghb v1, v6, v7
-- MFVRD_R3_V1
-+ mfvrd r3, v1
- srdi rSTR2, rRTN, 48
- sldi rSTR2, rSTR2, 56
- srdi rSTR2, rSTR2, 56
-@@ -320,15 +306,15 @@ L(null_found):
- #ifdef __LITTLE_ENDIAN__
- /* Count trailing zero. */
- vspltisb v8, -1
-- VADDUQM_V7_V8
-+ vadduqm v9, v7, v8
- vandc v8, v9, v7
-- VPOPCNTD_V8_V8
-+ vpopcntd v8, v8
- vspltb v6, v8, 15
- vcmpequb. v6, v6, v10
- blt cr6, L(shift_8)
- #else
- /* Count leading zero. */
-- VCLZD_V8_v7
-+ vclzd v8, v7
- vspltb v6, v8, 7
- vcmpequb. v6, v6, v10
- blt cr6, L(shift_8)
-@@ -343,10 +329,10 @@ L(skipsum1):
- vspltisb v10, 7
- vslb v10, v10, v10
- vsldoi v9, v0, v10, 1
-- VSUBUDM_V9_V8
-+ vsubudm v9, v9, v8
- vspltisb v8, 8
- vsldoi v8, v0, v8, 1
-- VSUBUDM_V9_V8
-+ vsubudm v9, v9, v8
- /* Shift and remove junk after null character. */
- #ifdef __LITTLE_ENDIAN__
- vslo v5, v5, v9
-diff --git a/sysdeps/powerpc/powerpc64/power8/strcasestr.S b/sysdeps/powerpc/powerpc64/power8/strcasestr.S
-index 9fc24c29f9..e10f06fd86 100644
---- a/sysdeps/powerpc/powerpc64/power8/strcasestr.S
-+++ b/sysdeps/powerpc/powerpc64/power8/strcasestr.S
-@@ -73,18 +73,8 @@
- vor reg, v8, reg; \
- vcmpequb. v6, reg, v4;
-
--/* TODO: change these to the actual instructions when the minimum required
-- binutils allows it. */
--#ifdef _ARCH_PWR8
--#define VCLZD_V8_v7 vclzd v8, v7;
--#else
--#define VCLZD_V8_v7 .long 0x11003fc2
--#endif
--
- #define FRAMESIZE (FRAME_MIN_SIZE+48)
--/* TODO: change this to .machine power8 when the minimum required binutils
-- allows it. */
-- .machine power7
-+ .machine power8
- ENTRY (STRCASESTR, 4)
- CALL_MCOUNT 2
- mflr r0 /* Load link register LR to r0. */
-@@ -291,7 +281,7 @@ L(nullchk1):
- vcmpequb. v6, v0, v7
- /* Shift r3 by 16 bytes and proceed. */
- blt cr6, L(shift16)
-- VCLZD_V8_v7
-+ vclzd v8, v7
- #ifdef __LITTLE_ENDIAN__
- vspltb v6, v8, 15
- #else
-diff --git a/sysdeps/powerpc/powerpc64/power8/strcmp.S b/sysdeps/powerpc/powerpc64/power8/strcmp.S
-index 15e7351d1b..d592266d1d 100644
---- a/sysdeps/powerpc/powerpc64/power8/strcmp.S
-+++ b/sysdeps/powerpc/powerpc64/power8/strcmp.S
-@@ -31,6 +31,7 @@
- 64K as default, the page cross handling assumes minimum page size of
- 4k. */
-
-+ .machine power8
- ENTRY_TOCLESS (STRCMP, 4)
- li r0,0
-
---
-2.41.0