forked from rpms/glibc
24af28d49b
Upstream commit: 5d070d12b3a52bc44dd1b71743abc4b6243862ae - x86: Expand the comment on when REP STOSB is used on memset - x86: Do not prefer ERMS for memset on Zen3+ - x86: Fix Zen3/Zen4 ERMS selection (BZ 30994) - Add tst-gnu2-tls2mod1 to test-internal-extras - elf: Enable TLS descriptor tests on aarch64 - arm: Update _dl_tlsdesc_dynamic to preserve caller-saved registers (BZ 31372) - Ignore undefined symbols for -mtls-dialect=gnu2 - x86-64: Allocate state buffer space for RDI, RSI and RBX - x86-64: Update _dl_tlsdesc_dynamic to preserve AMX registers - x86: Update _dl_tlsdesc_dynamic to preserve caller-saved registers - x86-64: Save APX registers in ld.so trampoline - LoongArch: Correct {__ieee754, _}_scalb -> {__ieee754, _}_scalbf - powerpc: Placeholder and infrastructure/build support to add Power11 related changes. - powerpc: Add HWCAP3/HWCAP4 data to TCB for Power Architecture.
173 lines
6.5 KiB
Diff
173 lines
6.5 KiB
Diff
commit aad45c8ac30aa1072e54903ce6aead22702f244a
|
||
Author: Amrita H S <amritahs@linux.ibm.com>
|
||
Date: Tue Mar 19 19:08:47 2024 -0500
|
||
|
||
powerpc: Placeholder and infrastructure/build support to add Power11 related changes.
|
||
|
||
The following three changes have been added to provide initial Power11 support.
|
||
1. Add the directories to hold Power11 files.
|
||
2. Add support to select Power11 libraries based on AT_PLATFORM.
|
||
3. Let submachine=power11 be set automatically.
|
||
|
||
Reviewed-by: Florian Weimer <fweimer@redhat.com>
|
||
Reviewed-by: Peter Bergner <bergner@linux.ibm.com>
|
||
(cherry picked from commit 1ea051145612f199d8716ecdf78b084b00b5a727)
|
||
|
||
diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
|
||
index f8cb343877386402..b36697ba440654be 100644
|
||
--- a/sysdeps/powerpc/dl-procinfo.h
|
||
+++ b/sysdeps/powerpc/dl-procinfo.h
|
||
@@ -38,7 +38,7 @@
|
||
#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
|
||
+ PPC_FEATURE_HAS_DFP)
|
||
|
||
-#define _DL_PLATFORMS_COUNT 16
|
||
+#define _DL_PLATFORMS_COUNT 17
|
||
|
||
#define _DL_FIRST_PLATFORM 32
|
||
/* Mask to filter out platforms. */
|
||
@@ -62,6 +62,7 @@
|
||
#define PPC_PLATFORM_POWER8 13
|
||
#define PPC_PLATFORM_POWER9 14
|
||
#define PPC_PLATFORM_POWER10 15
|
||
+#define PPC_PLATFORM_POWER11 16
|
||
|
||
static inline const char *
|
||
__attribute__ ((unused))
|
||
@@ -89,6 +90,11 @@ _dl_string_platform (const char *str)
|
||
ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER10;
|
||
str++;
|
||
}
|
||
+ else if (str[1] == '1')
|
||
+ {
|
||
+ ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER11;
|
||
+ str++;
|
||
+ }
|
||
else
|
||
return -1;
|
||
break;
|
||
diff --git a/sysdeps/powerpc/powerpc32/power11/Implies b/sysdeps/powerpc/powerpc32/power11/Implies
|
||
new file mode 100644
|
||
index 0000000000000000..051cbe0f7911c93c
|
||
--- /dev/null
|
||
+++ b/sysdeps/powerpc/powerpc32/power11/Implies
|
||
@@ -0,0 +1,2 @@
|
||
+powerpc/powerpc32/power10/fpu
|
||
+powerpc/powerpc32/power10
|
||
diff --git a/sysdeps/powerpc/powerpc32/power11/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc32/power11/fpu/multiarch/Implies
|
||
new file mode 100644
|
||
index 0000000000000000..58edb2861d17f504
|
||
--- /dev/null
|
||
+++ b/sysdeps/powerpc/powerpc32/power11/fpu/multiarch/Implies
|
||
@@ -0,0 +1 @@
|
||
+powerpc/powerpc32/power10/fpu/multiarch
|
||
diff --git a/sysdeps/powerpc/powerpc32/power11/multiarch/Implies b/sysdeps/powerpc/powerpc32/power11/multiarch/Implies
|
||
new file mode 100644
|
||
index 0000000000000000..c70f0428badbaf14
|
||
--- /dev/null
|
||
+++ b/sysdeps/powerpc/powerpc32/power11/multiarch/Implies
|
||
@@ -0,0 +1 @@
|
||
+powerpc/powerpc32/power10/multiarch
|
||
diff --git a/sysdeps/powerpc/powerpc64/be/power11/Implies b/sysdeps/powerpc/powerpc64/be/power11/Implies
|
||
new file mode 100644
|
||
index 0000000000000000..de481d1c13db695e
|
||
--- /dev/null
|
||
+++ b/sysdeps/powerpc/powerpc64/be/power11/Implies
|
||
@@ -0,0 +1,2 @@
|
||
+powerpc/powerpc64/be/power10/fpu
|
||
+powerpc/powerpc64/be/power10
|
||
diff --git a/sysdeps/powerpc/powerpc64/be/power11/fpu/Implies b/sysdeps/powerpc/powerpc64/be/power11/fpu/Implies
|
||
new file mode 100644
|
||
index 0000000000000000..dff0e13064ce8238
|
||
--- /dev/null
|
||
+++ b/sysdeps/powerpc/powerpc64/be/power11/fpu/Implies
|
||
@@ -0,0 +1 @@
|
||
+powerpc/powerpc64/be/power10/fpu
|
||
diff --git a/sysdeps/powerpc/powerpc64/be/power11/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/be/power11/fpu/multiarch/Implies
|
||
new file mode 100644
|
||
index 0000000000000000..c3f259e0097386a5
|
||
--- /dev/null
|
||
+++ b/sysdeps/powerpc/powerpc64/be/power11/fpu/multiarch/Implies
|
||
@@ -0,0 +1 @@
|
||
+powerpc/powerpc64/be/power10/fpu/multiarch
|
||
diff --git a/sysdeps/powerpc/powerpc64/be/power11/multiarch/Implies b/sysdeps/powerpc/powerpc64/be/power11/multiarch/Implies
|
||
new file mode 100644
|
||
index 0000000000000000..9491a394c9519d01
|
||
--- /dev/null
|
||
+++ b/sysdeps/powerpc/powerpc64/be/power11/multiarch/Implies
|
||
@@ -0,0 +1 @@
|
||
+powerpc/powerpc64/be/power10/multiarch
|
||
diff --git a/sysdeps/powerpc/powerpc64/le/power11/Implies b/sysdeps/powerpc/powerpc64/le/power11/Implies
|
||
new file mode 100644
|
||
index 0000000000000000..e18182dcc1f4c25f
|
||
--- /dev/null
|
||
+++ b/sysdeps/powerpc/powerpc64/le/power11/Implies
|
||
@@ -0,0 +1,2 @@
|
||
+powerpc/powerpc64/le/power10/fpu
|
||
+powerpc/powerpc64/le/power10
|
||
diff --git a/sysdeps/powerpc/powerpc64/le/power11/fpu/Implies b/sysdeps/powerpc/powerpc64/le/power11/fpu/Implies
|
||
new file mode 100644
|
||
index 0000000000000000..e41bd55684dbb5b8
|
||
--- /dev/null
|
||
+++ b/sysdeps/powerpc/powerpc64/le/power11/fpu/Implies
|
||
@@ -0,0 +1 @@
|
||
+powerpc/powerpc64/le/power10/fpu
|
||
diff --git a/sysdeps/powerpc/powerpc64/le/power11/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/le/power11/fpu/multiarch/Implies
|
||
new file mode 100644
|
||
index 0000000000000000..c838d5093140eae3
|
||
--- /dev/null
|
||
+++ b/sysdeps/powerpc/powerpc64/le/power11/fpu/multiarch/Implies
|
||
@@ -0,0 +1 @@
|
||
+powerpc/powerpc64/le/power10/fpu/multiarch
|
||
diff --git a/sysdeps/powerpc/powerpc64/le/power11/multiarch/Implies b/sysdeps/powerpc/powerpc64/le/power11/multiarch/Implies
|
||
new file mode 100644
|
||
index 0000000000000000..687248c3c267cd8c
|
||
--- /dev/null
|
||
+++ b/sysdeps/powerpc/powerpc64/le/power11/multiarch/Implies
|
||
@@ -0,0 +1 @@
|
||
+powerpc/powerpc64/le/power10/multiarch
|
||
diff --git a/sysdeps/powerpc/powerpc64/le/tst-glibc-hwcaps.c b/sysdeps/powerpc/powerpc64/le/tst-glibc-hwcaps.c
|
||
index 77465d9133410267..65d3e69303a1c963 100644
|
||
--- a/sysdeps/powerpc/powerpc64/le/tst-glibc-hwcaps.c
|
||
+++ b/sysdeps/powerpc/powerpc64/le/tst-glibc-hwcaps.c
|
||
@@ -36,9 +36,11 @@ compute_level (void)
|
||
return 9;
|
||
if (strcmp (platform, "power10") == 0)
|
||
return 10;
|
||
+ if (strcmp (platform, "power11") == 0)
|
||
+ return 11;
|
||
printf ("warning: unrecognized AT_PLATFORM value: %s\n", platform);
|
||
- /* Assume that the new platform supports POWER10. */
|
||
- return 10;
|
||
+ /* Assume that the new platform supports POWER11. */
|
||
+ return 11;
|
||
}
|
||
|
||
static int
|
||
diff --git a/sysdeps/powerpc/preconfigure b/sysdeps/powerpc/preconfigure
|
||
index 4de94089a3f68532..9e5a07ab6d6767cd 100644
|
||
--- a/sysdeps/powerpc/preconfigure
|
||
+++ b/sysdeps/powerpc/preconfigure
|
||
@@ -58,7 +58,7 @@ fi
|
||
|
||
;;
|
||
|
||
- a2|970|power[4-9]|power5x|power6+|power10)
|
||
+ a2|970|power[4-9]|power5x|power6+|power10|power11)
|
||
submachine=${archcpu}
|
||
if test ${libc_cv_cc_submachine+y}
|
||
then :
|
||
diff --git a/sysdeps/powerpc/preconfigure.ac b/sysdeps/powerpc/preconfigure.ac
|
||
index 6c63bd8257b7e40a..14b6dafd4a895c3b 100644
|
||
--- a/sysdeps/powerpc/preconfigure.ac
|
||
+++ b/sysdeps/powerpc/preconfigure.ac
|
||
@@ -46,7 +46,7 @@ case "${machine}:${submachine}" in
|
||
AC_CACHE_VAL(libc_cv_cc_submachine,libc_cv_cc_submachine="")
|
||
;;
|
||
|
||
- a2|970|power[[4-9]]|power5x|power6+|power10)
|
||
+ a2|970|power[[4-9]]|power5x|power6+|power10|power11)
|
||
submachine=${archcpu}
|
||
AC_CACHE_VAL(libc_cv_cc_submachine,libc_cv_cc_submachine="")
|
||
;;
|