This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch rsa/hwcap2_v3 updated. glibc-2.17-593-g82fb7c8
- From: rsa at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 14 May 2013 19:37:17 -0000
- Subject: GNU C Library master sources branch rsa/hwcap2_v3 updated. glibc-2.17-593-g82fb7c8
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, rsa/hwcap2_v3 has been updated
via 82fb7c849d61b544174de646181f5a159adb6ceb (commit)
via c3ff538eb2d7a696d4f4731f68267b36133e346e (commit)
via f6fdb1682fa24508f598c383a35037e608a2745b (commit)
from 1da1702d0c3996db36d44f007d7deebb7e637c08 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=82fb7c849d61b544174de646181f5a159adb6ceb
commit 82fb7c849d61b544174de646181f5a159adb6ceb
Author: Ryan S. Arnold <rsa@linux.vnet.ibm.com>
Date: Tue May 14 14:33:38 2013 -0500
PowerPC: Add support for POWER8.
diff --git a/ChangeLog b/ChangeLog
index d3c8909..61c71b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,32 @@
+2013-05-14 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
+
+ * sysdeps/powerpc/bits/hwcap.h: Add new AT_HWCAP2 features.
+ [PPC_FEATURE2_ARCH_2_07]: New feature bit for Power ISA 2.07.
+ [PPC_FEATURE2_HAS_HTM]: New feature bit for Hardware Transactional
+ Memory.
+ [PPC_FEATURE2_HAS_DSCR]: New feature bit for Data Stream Control
+ Register.
+ [PPC_FEATURE2_HAS_EBB]: New feature bit for Event Based Branching
+ facility.
+ [PPC_FEATURE2_HAS_ISEL]: New feature bit for Integer Select.
+ [PPC_FEATURE2_HAS_TAR]: New feature bit for Target Address Register
+ facility.
+ * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platforms): Add power8 as
+ PPC_PLATFORM_POWER8.
+ (_dl_powerpc_cap_flags): Add arch_2_07, htm, dscr, ebb, isel, and tar
+ as hwcap strings for power8.
+ * sysdeps/powerpc/dl-procinfo.h
+ [_DL_HWCAP2_FIRST]: New define to account for the start of AT_HWCAP2.
+ [_DL_HWCAP_COUNT]: Update count to cover arch_2_07, htm, dscr, ebb,
+ isel, and tar.
+ [_DL_PLATFORMS_COUNT]: Increment for power8.
+ [PPC_PLATFORM_POWER8]: New definition.
+ (_dl_string_platform): Add return value for power8 platform string.
+ * sysdeps/powerpc/powerpc32/power8/Implies: New file.
+ * sysdeps/powerpc/powerpc64/power8/Implies: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies: Likewise.
+
2013-05-13 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platforms): Add ppc405,
diff --git a/sysdeps/powerpc/bits/hwcap.h b/sysdeps/powerpc/bits/hwcap.h
index 783138a..c1d1def 100644
--- a/sysdeps/powerpc/bits/hwcap.h
+++ b/sysdeps/powerpc/bits/hwcap.h
@@ -20,9 +20,9 @@
# error "Never include <bits/hwcap.h> directly; use <sys/auxv.h> instead."
#endif
-/*
- * The following must match the kernels asm/cputable.h.
- */
+/* The bit numbers must match those in the kernel's asm/cputable.h. */
+
+/* Feature definitions in AT_HWCAP. */
#define PPC_FEATURE_32 0x80000000 /* 32-bit mode. */
#define PPC_FEATURE_64 0x40000000 /* 64-bit mode. */
#define PPC_FEATURE_601_INSTR 0x20000000 /* 601 chip, Old POWER ISA. */
@@ -39,7 +39,7 @@
#define PPC_FEATURE_POWER5 0x00040000 /* POWER5 ISA 2.02 */
#define PPC_FEATURE_POWER5_PLUS 0x00020000 /* POWER5+ ISA 2.03 */
#define PPC_FEATURE_CELL_BE 0x00010000 /* CELL Broadband Engine */
-#define PPC_FEATURE_BOOKE 0x00008000
+#define PPC_FEATURE_BOOKE 0x00008000 /* ISA Category Embedded */
#define PPC_FEATURE_SMT 0x00004000 /* Simultaneous Multi-Threading */
#define PPC_FEATURE_ICACHE_SNOOP 0x00002000
#define PPC_FEATURE_ARCH_2_05 0x00001000 /* ISA 2.05 */
@@ -51,3 +51,11 @@
#define PPC_FEATURE_PSERIES_PERFMON_COMPAT 0x00000040
#define PPC_FEATURE_TRUE_LE 0x00000002
#define PPC_FEATURE_PPC_LE 0x00000001
+
+/* Feature definitions in AT_HWCAP2. */
+#define PPC_FEATURE2_ARCH_2_07 0x80000000 /* ISA 2.07 */
+#define PPC_FEATURE2_HAS_HTM 0x40000000 /* Hardware Transactional Memory */
+#define PPC_FEATURE2_HAS_DSCR 0x20000000 /* Data Stream Control Register */
+#define PPC_FEATURE2_HAS_EBB 0x10000000 /* Event Base Branching */
+#define PPC_FEATURE2_HAS_ISEL 0x08000000 /* Integer Select */
+#define PPC_FEATURE2_HAS_TAR 0x04000000 /* Target Address Register */
diff --git a/sysdeps/powerpc/dl-procinfo.c b/sysdeps/powerpc/dl-procinfo.c
index 0f5c2b3..0fbbc80 100644
--- a/sysdeps/powerpc/dl-procinfo.c
+++ b/sysdeps/powerpc/dl-procinfo.c
@@ -45,11 +45,12 @@
#if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_cap_flags
#else
-PROCINFO_CLASS const char _dl_powerpc_cap_flags[25][10]
+PROCINFO_CLASS const char _dl_powerpc_cap_flags[31][10]
#endif
#ifndef PROCINFO_DECL
= {
- "vsx",
+ "ebb", "isel", "tar",
+ "vsx", "arch_2_07", "htm", "dscr",
"arch_2_06", "power6x", "dfp", "pa6t",
"arch_2_05", "ic_snoop", "smt", "booke",
"cellbe", "power5+", "power5", "power4",
@@ -67,7 +68,7 @@ PROCINFO_CLASS const char _dl_powerpc_cap_flags[25][10]
#if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_platforms
#else
-PROCINFO_CLASS const char _dl_powerpc_platforms[13][12]
+PROCINFO_CLASS const char _dl_powerpc_platforms[14][12]
#endif
#ifndef PROCINFO_DECL
= {
@@ -83,7 +84,8 @@ PROCINFO_CLASS const char _dl_powerpc_platforms[13][12]
[PPC_PLATFORM_PPC405] = "ppc405",
[PPC_PLATFORM_PPC440] = "ppc440",
[PPC_PLATFORM_PPC464] = "ppc464",
- [PPC_PLATFORM_PPC476] = "ppc476"
+ [PPC_PLATFORM_PPC476] = "ppc476",
+ [PPC_PLATFORM_POWER8] = "power8"
}
#endif
#if !defined SHARED || defined PROCINFO_DECL
diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
index f24a0c6..3a5ce12 100644
--- a/sysdeps/powerpc/dl-procinfo.h
+++ b/sysdeps/powerpc/dl-procinfo.h
@@ -20,18 +20,21 @@
#define _DL_PROCINFO_H 1
#include <ldsodefs.h>
-#include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */
+#include <sysdep.h> /* This defines the PPC_FEATURE[2]_* macros. */
/* There are 25 bits used in AT_HWCAP, but they are bits 7..31. */
#define _DL_HWCAP_FIRST 7
+/* Where AT_HWCAP2 starts relative to _DL_HWCAP_FIRST. */
#define _DL_HWCAP2_FIRST 32
-#define _DL_HWCAP_COUNT 32
+
+/* The total number of used bits relative to _DL_HWCAP_FIRST. */
+#define _DL_HWCAP_COUNT 38
/* These bits influence library search. */
#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
+ PPC_FEATURE_HAS_DFP)
-#define _DL_PLATFORMS_COUNT 13
+#define _DL_PLATFORMS_COUNT 14
#define _DL_FIRST_PLATFORM 32
/* Mask to filter out platforms. */
@@ -52,6 +55,7 @@
#define PPC_PLATFORM_PPC440 10
#define PPC_PLATFORM_PPC464 11
#define PPC_PLATFORM_PPC476 12
+#define PPC_PLATFORM_POWER8 13
static inline const char *
__attribute__ ((unused))
@@ -112,6 +116,9 @@ _dl_string_platform (const char *str)
case '7':
ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER7;
break;
+ case '8':
+ ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER8;
+ break;
default:
return -1;
}
@@ -166,7 +173,7 @@ _dl_procinfo (unsigned int type, int word)
case AT_HWCAP:
_dl_printf ("AT_HWCAP: ");
first = _DL_HWCAP_FIRST;
- count = MIN(_DL_HWCAP_COUNT,_DL_HWCAP2_FIRST);
+ count = MIN(_DL_HWCAP_COUNT, _DL_HWCAP2_FIRST);
str_offset = 0;
break;
case AT_HWCAP2:
diff --git a/sysdeps/powerpc/powerpc32/power8/Implies b/sysdeps/powerpc/powerpc32/power8/Implies
new file mode 100644
index 0000000..083f3e9
--- /dev/null
+++ b/sysdeps/powerpc/powerpc32/power8/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc32/power7/fpu
+powerpc/powerpc32/power7
diff --git a/sysdeps/powerpc/powerpc64/power8/Implies b/sysdeps/powerpc/powerpc64/power8/Implies
new file mode 100644
index 0000000..9a5e3c7
--- /dev/null
+++ b/sysdeps/powerpc/powerpc64/power8/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/power7/fpu
+powerpc/powerpc64/power7
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies
new file mode 100644
index 0000000..066dea2
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc32/power8/fpu
+powerpc/powerpc32/power8
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies
new file mode 100644
index 0000000..fad2505
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/power8/fpu
+powerpc/powerpc64/power8
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=c3ff538eb2d7a696d4f4731f68267b36133e346e
commit c3ff538eb2d7a696d4f4731f68267b36133e346e
Author: Ryan S. Arnold <rsa@linux.vnet.ibm.com>
Date: Mon May 13 15:38:13 2013 -0500
PowerPC: Remove redundant ports/sysdeps/powerpc/dl-procinfo.[hc].
diff --git a/ports/ChangeLog.powerpc b/ports/ChangeLog.powerpc
index be3c4a0..1e40b60 100644
--- a/ports/ChangeLog.powerpc
+++ b/ports/ChangeLog.powerpc
@@ -1,5 +1,13 @@
2013-05-13 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
+ * sysdeps/powerpc/dl-procinfo.c: Remove as this is now redundant with
+ glibc/sysdeps/powerpc/dl-procinfo.c.
+ dl-procinfo.c.
+ * sysdeps/powerpc/dl-procinfo.h: Remove as this is now redundant with
+ glibc/sysdeps/powerpc/dl-procinfo.h
+
+2013-05-13 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
+
* sysdeps/powerpc/dl-procinfo.h: Fix whitespace by correcting
spaces with tabs where appropriate.
diff --git a/ports/sysdeps/powerpc/dl-procinfo.c b/ports/sysdeps/powerpc/dl-procinfo.c
deleted file mode 100644
index 0f5c2b3..0000000
--- a/ports/sysdeps/powerpc/dl-procinfo.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Data for processor capability information. PowerPC version.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-/* This information must be kept in sync with the _DL_HWCAP_COUNT and
- _DL_PLATFORM_COUNT definitions in procinfo.h.
-
- If anything should be added here check whether the size of each string
- is still ok with the given array size.
-
- All the #ifdefs in the definitions are quite irritating but
- necessary if we want to avoid duplicating the information. There
- are three different modes:
-
- - PROCINFO_DECL is defined. This means we are only interested in
- declarations.
-
- - PROCINFO_DECL is not defined:
-
- + if SHARED is defined the file is included in an array
- initializer. The .element = { ... } syntax is needed.
-
- + if SHARED is not defined a normal array initialization is
- needed.
- */
-
-#ifndef PROCINFO_CLASS
-# define PROCINFO_CLASS
-#endif
-
-#if !defined PROCINFO_DECL && defined SHARED
- ._dl_powerpc_cap_flags
-#else
-PROCINFO_CLASS const char _dl_powerpc_cap_flags[25][10]
-#endif
-#ifndef PROCINFO_DECL
-= {
- "vsx",
- "arch_2_06", "power6x", "dfp", "pa6t",
- "arch_2_05", "ic_snoop", "smt", "booke",
- "cellbe", "power5+", "power5", "power4",
- "notb", "efpdouble", "efpsingle", "spe",
- "ucache", "4xxmac", "mmu", "fpu",
- "altivec", "ppc601", "ppc64", "ppc32",
- }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
-#if !defined PROCINFO_DECL && defined SHARED
- ._dl_powerpc_platforms
-#else
-PROCINFO_CLASS const char _dl_powerpc_platforms[13][12]
-#endif
-#ifndef PROCINFO_DECL
-= {
- [PPC_PLATFORM_POWER4] = "power4",
- [PPC_PLATFORM_PPC970] = "ppc970",
- [PPC_PLATFORM_POWER5] = "power5",
- [PPC_PLATFORM_POWER5_PLUS] = "power5+",
- [PPC_PLATFORM_POWER6] = "power6",
- [PPC_PLATFORM_CELL_BE] = "ppc-cell-be",
- [PPC_PLATFORM_POWER6X] = "power6x",
- [PPC_PLATFORM_POWER7] = "power7",
- [PPC_PLATFORM_PPCA2] = "ppca2",
- [PPC_PLATFORM_PPC405] = "ppc405",
- [PPC_PLATFORM_PPC440] = "ppc440",
- [PPC_PLATFORM_PPC464] = "ppc464",
- [PPC_PLATFORM_PPC476] = "ppc476"
- }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
-#undef PROCINFO_DECL
-#undef PROCINFO_CLASS
diff --git a/ports/sysdeps/powerpc/dl-procinfo.h b/ports/sysdeps/powerpc/dl-procinfo.h
deleted file mode 100644
index d499cf1..0000000
--- a/ports/sysdeps/powerpc/dl-procinfo.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/* Processor capability information handling macros. PowerPC version.
- Copyright (C) 2005-2013 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _DL_PROCINFO_H
-#define _DL_PROCINFO_H 1
-
-#include <stdint.h>
-#include <ldsodefs.h>
-#include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */
-
-/* There are 25 bits used, but they are bits 7..31. */
-#define _DL_HWCAP_FIRST 7
-#define _DL_HWCAP_COUNT 32
-
-/* These bits influence library search. */
-#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
- + PPC_FEATURE_HAS_DFP)
-
-#define _DL_PLATFORMS_COUNT 13
-
-#define _DL_FIRST_PLATFORM 32
-/* Mask to filter out platforms. */
-#define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \
- << _DL_FIRST_PLATFORM)
-
-/* Platform bits (relative to _DL_FIRST_PLATFORM). */
-#define PPC_PLATFORM_POWER4 0
-#define PPC_PLATFORM_PPC970 1
-#define PPC_PLATFORM_POWER5 2
-#define PPC_PLATFORM_POWER5_PLUS 3
-#define PPC_PLATFORM_POWER6 4
-#define PPC_PLATFORM_CELL_BE 5
-#define PPC_PLATFORM_POWER6X 6
-#define PPC_PLATFORM_POWER7 7
-#define PPC_PLATFORM_PPCA2 8
-#define PPC_PLATFORM_PPC405 9
-#define PPC_PLATFORM_PPC440 10
-#define PPC_PLATFORM_PPC464 11
-#define PPC_PLATFORM_PPC476 12
-
-static inline const char *
-__attribute__ ((unused))
-_dl_hwcap_string (int idx)
-{
- return GLRO(dl_powerpc_cap_flags)[idx - _DL_HWCAP_FIRST];
-}
-
-static inline const char *
-__attribute__ ((unused))
-_dl_platform_string (int idx)
-{
- return GLRO(dl_powerpc_platforms)[idx - _DL_FIRST_PLATFORM];
-}
-
-static inline int
-__attribute__ ((unused))
-_dl_string_hwcap (const char *str)
-{
- for (int i = _DL_HWCAP_FIRST; i < _DL_HWCAP_COUNT; ++i)
- if (strcmp (str, _dl_hwcap_string (i)) == 0)
- return i;
- return -1;
-}
-
-static inline int
-__attribute__ ((unused, always_inline))
-_dl_string_platform (const char *str)
-{
- if (str == NULL)
- return -1;
-
- if (strncmp (str, GLRO(dl_powerpc_platforms)[PPC_PLATFORM_POWER4], 5) == 0)
- {
- int ret;
- str += 5;
- switch (*str)
- {
- case '4':
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER4;
- break;
- case '5':
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER5;
- if (str[1] == '+')
- {
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER5_PLUS;
- ++str;
- }
- break;
- case '6':
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER6;
- if (str[1] == 'x')
- {
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER6X;
- ++str;
- }
- break;
- case '7':
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER7;
- break;
- default:
- return -1;
- }
- if (str[1] == '\0')
- return ret;
- }
- else if (strncmp (str, GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC970],
- 3) == 0)
- {
- if (strcmp (str + 3, GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC970]
- + 3) == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC970;
- else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_CELL_BE] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_CELL_BE;
- else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPCA2] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPCA2;
- else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC405] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC405;
- else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC440] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC440;
- else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC464] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC464;
- else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC476] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC476;
- }
-
- return -1;
-}
-
-#ifdef IS_IN_rtld
-
-static inline int
-__attribute__ ((unused))
-_dl_procinfo (unsigned int type, int word)
-{
- unsigned int first, count, str_offset;
-
- switch(type)
- {
- case AT_HWCAP:
- _dl_printf ("AT_HWCAP: ");
- first = _DL_HWCAP_FIRST;
- count = MIN(_DL_HWCAP_COUNT,_DL_HWCAP2_FIRST);
- str_offset = 0;
- break;
- case AT_HWCAP2:
- _dl_printf ("AT_HWCAP2: ");
- first = 0;
- count = _DL_HWCAP_COUNT - _DL_HWCAP2_FIRST;
- str_offset = _DL_HWCAP2_FIRST;
- break;
- default:
- /* This should not happen. */
- return -1;
- }
-
- for (int i = first; i < count; ++i)
- if (word & (1 << i))
- _dl_printf (" %s", _dl_hwcap_string (str_offset + i));
-
- _dl_printf ("\n");
-
- return 0;
-
-}
-#endif
-
-#endif /* dl-procinfo.h */
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=f6fdb1682fa24508f598c383a35037e608a2745b
commit f6fdb1682fa24508f598c383a35037e608a2745b
Author: Ryan S. Arnold <rsa@linux.vnet.ibm.com>
Date: Mon May 13 15:31:55 2013 -0500
PowerPC: Merge ports/ dl-procinfo.[hc] with base.
diff --git a/ChangeLog b/ChangeLog
index 02904aa..d3c8909 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2013-05-13 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
+
+ * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platforms): Add ppc405,
+ ppc440, ppc464, and ppc476, merging from ports/ dl-procinfo.c.
+ * sysdeps/powerpc/dl-procinfo.h: Fix whitespace by correcting spaces
+ with tabs where appropriate.
+ [PPC_PLATFORM_PPC405]: Define new platform merging from ports/
+ dl-procinfo.h.
+ [PPC_PLATFORM_PPC440]: Likewise.
+ [PPC_PLATFORM_PPC464]: Likewise.
+ [PPC_PLATFORM_PPC476]: Likewise.
+ (_dl_string_platform): Add support for detecting ppc405, ppc440,
+ ppc464, and ppc476 platform strings merging from ports/
+ dl-procinfo.h.
+
2013-05-03 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
* elf/dl-support.c (_dl_aux_init): Add support for AT_HWCAP2.
diff --git a/ports/ChangeLog.powerpc b/ports/ChangeLog.powerpc
index c787da6..be3c4a0 100644
--- a/ports/ChangeLog.powerpc
+++ b/ports/ChangeLog.powerpc
@@ -1,3 +1,8 @@
+2013-05-13 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
+
+ * sysdeps/powerpc/dl-procinfo.h: Fix whitespace by correcting
+ spaces with tabs where appropriate.
+
2013-05-03 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
* sysdeps/powerpc/dl-procinfo.h (_dl_procinfo): Add support for
diff --git a/ports/sysdeps/powerpc/dl-procinfo.h b/ports/sysdeps/powerpc/dl-procinfo.h
index a9d98d3..d499cf1 100644
--- a/ports/sysdeps/powerpc/dl-procinfo.h
+++ b/ports/sysdeps/powerpc/dl-procinfo.h
@@ -21,37 +21,37 @@
#include <stdint.h>
#include <ldsodefs.h>
-#include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */
+#include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */
/* There are 25 bits used, but they are bits 7..31. */
-#define _DL_HWCAP_FIRST 7
-#define _DL_HWCAP_COUNT 32
+#define _DL_HWCAP_FIRST 7
+#define _DL_HWCAP_COUNT 32
/* These bits influence library search. */
-#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
- + PPC_FEATURE_HAS_DFP)
+#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
+ + PPC_FEATURE_HAS_DFP)
-#define _DL_PLATFORMS_COUNT 13
+#define _DL_PLATFORMS_COUNT 13
-#define _DL_FIRST_PLATFORM 32
+#define _DL_FIRST_PLATFORM 32
/* Mask to filter out platforms. */
-#define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \
- << _DL_FIRST_PLATFORM)
+#define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \
+ << _DL_FIRST_PLATFORM)
/* Platform bits (relative to _DL_FIRST_PLATFORM). */
-#define PPC_PLATFORM_POWER4 0
-#define PPC_PLATFORM_PPC970 1
-#define PPC_PLATFORM_POWER5 2
-#define PPC_PLATFORM_POWER5_PLUS 3
-#define PPC_PLATFORM_POWER6 4
-#define PPC_PLATFORM_CELL_BE 5
-#define PPC_PLATFORM_POWER6X 6
-#define PPC_PLATFORM_POWER7 7
-#define PPC_PLATFORM_PPCA2 8
-#define PPC_PLATFORM_PPC405 9
-#define PPC_PLATFORM_PPC440 10
-#define PPC_PLATFORM_PPC464 11
-#define PPC_PLATFORM_PPC476 12
+#define PPC_PLATFORM_POWER4 0
+#define PPC_PLATFORM_PPC970 1
+#define PPC_PLATFORM_POWER5 2
+#define PPC_PLATFORM_POWER5_PLUS 3
+#define PPC_PLATFORM_POWER6 4
+#define PPC_PLATFORM_CELL_BE 5
+#define PPC_PLATFORM_POWER6X 6
+#define PPC_PLATFORM_POWER7 7
+#define PPC_PLATFORM_PPCA2 8
+#define PPC_PLATFORM_PPC405 9
+#define PPC_PLATFORM_PPC440 10
+#define PPC_PLATFORM_PPC464 11
+#define PPC_PLATFORM_PPC476 12
static inline const char *
__attribute__ ((unused))
@@ -89,65 +89,65 @@ _dl_string_platform (const char *str)
int ret;
str += 5;
switch (*str)
- {
- case '4':
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER4;
- break;
- case '5':
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER5;
- if (str[1] == '+')
- {
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER5_PLUS;
- ++str;
- }
- break;
- case '6':
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER6;
- if (str[1] == 'x')
- {
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER6X;
- ++str;
- }
- break;
- case '7':
- ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER7;
- break;
- default:
- return -1;
- }
+ {
+ case '4':
+ ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER4;
+ break;
+ case '5':
+ ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER5;
+ if (str[1] == '+')
+ {
+ ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER5_PLUS;
+ ++str;
+ }
+ break;
+ case '6':
+ ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER6;
+ if (str[1] == 'x')
+ {
+ ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER6X;
+ ++str;
+ }
+ break;
+ case '7':
+ ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER7;
+ break;
+ default:
+ return -1;
+ }
if (str[1] == '\0')
return ret;
}
else if (strncmp (str, GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC970],
- 3) == 0)
+ 3) == 0)
{
if (strcmp (str + 3, GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC970]
- + 3) == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC970;
+ + 3) == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC970;
else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_CELL_BE] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_CELL_BE;
+ GLRO(dl_powerpc_platforms)[PPC_PLATFORM_CELL_BE] + 3)
+ == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_CELL_BE;
else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPCA2] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPCA2;
+ GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPCA2] + 3)
+ == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPCA2;
else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC405] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC405;
+ GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC405] + 3)
+ == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC405;
else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC440] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC440;
+ GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC440] + 3)
+ == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC440;
else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC464] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC464;
+ GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC464] + 3)
+ == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC464;
else if (strcmp (str + 3,
- GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC476] + 3)
- == 0)
- return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC476;
+ GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC476] + 3)
+ == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC476;
}
return -1;
diff --git a/sysdeps/powerpc/dl-procinfo.c b/sysdeps/powerpc/dl-procinfo.c
index fb5051f..0f5c2b3 100644
--- a/sysdeps/powerpc/dl-procinfo.c
+++ b/sysdeps/powerpc/dl-procinfo.c
@@ -13,7 +13,7 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
+ License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
/* This information must be kept in sync with the _DL_HWCAP_COUNT and
@@ -49,7 +49,7 @@ PROCINFO_CLASS const char _dl_powerpc_cap_flags[25][10]
#endif
#ifndef PROCINFO_DECL
= {
- "vsx",
+ "vsx",
"arch_2_06", "power6x", "dfp", "pa6t",
"arch_2_05", "ic_snoop", "smt", "booke",
"cellbe", "power5+", "power5", "power4",
@@ -67,7 +67,7 @@ PROCINFO_CLASS const char _dl_powerpc_cap_flags[25][10]
#if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_platforms
#else
-PROCINFO_CLASS const char _dl_powerpc_platforms[9][12]
+PROCINFO_CLASS const char _dl_powerpc_platforms[13][12]
#endif
#ifndef PROCINFO_DECL
= {
@@ -79,7 +79,11 @@ PROCINFO_CLASS const char _dl_powerpc_platforms[9][12]
[PPC_PLATFORM_CELL_BE] = "ppc-cell-be",
[PPC_PLATFORM_POWER6X] = "power6x",
[PPC_PLATFORM_POWER7] = "power7",
- [PPC_PLATFORM_PPCA2] = "ppca2"
+ [PPC_PLATFORM_PPCA2] = "ppca2",
+ [PPC_PLATFORM_PPC405] = "ppc405",
+ [PPC_PLATFORM_PPC440] = "ppc440",
+ [PPC_PLATFORM_PPC464] = "ppc464",
+ [PPC_PLATFORM_PPC476] = "ppc476"
}
#endif
#if !defined SHARED || defined PROCINFO_DECL
diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
index ca20732..f24a0c6 100644
--- a/sysdeps/powerpc/dl-procinfo.h
+++ b/sysdeps/powerpc/dl-procinfo.h
@@ -13,14 +13,14 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
+ License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
#ifndef _DL_PROCINFO_H
-#define _DL_PROCINFO_H 1
+#define _DL_PROCINFO_H 1
#include <ldsodefs.h>
-#include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */
+#include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */
/* There are 25 bits used in AT_HWCAP, but they are bits 7..31. */
#define _DL_HWCAP_FIRST 7
@@ -31,12 +31,12 @@
#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
+ PPC_FEATURE_HAS_DFP)
-#define _DL_PLATFORMS_COUNT 9
+#define _DL_PLATFORMS_COUNT 13
-#define _DL_FIRST_PLATFORM 32
+#define _DL_FIRST_PLATFORM 32
/* Mask to filter out platforms. */
-#define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \
- << _DL_FIRST_PLATFORM)
+#define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \
+ << _DL_FIRST_PLATFORM)
/* Platform bits (relative to _DL_FIRST_PLATFORM). */
#define PPC_PLATFORM_POWER4 0
@@ -48,6 +48,10 @@
#define PPC_PLATFORM_POWER6X 6
#define PPC_PLATFORM_POWER7 7
#define PPC_PLATFORM_PPCA2 8
+#define PPC_PLATFORM_PPC405 9
+#define PPC_PLATFORM_PPC440 10
+#define PPC_PLATFORM_PPC464 11
+#define PPC_PLATFORM_PPC476 12
static inline const char *
__attribute__ ((unused))
@@ -112,7 +116,7 @@ _dl_string_platform (const char *str)
return -1;
}
if (str[1] == '\0')
- return ret;
+ return ret;
}
else if (strncmp (str, GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC970],
3) == 0)
@@ -128,6 +132,22 @@ _dl_string_platform (const char *str)
GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPCA2] + 3)
== 0)
return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPCA2;
+ else if (strcmp (str + 3,
+ GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC405] + 3)
+ == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC405;
+ else if (strcmp (str + 3,
+ GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC440] + 3)
+ == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC440;
+ else if (strcmp (str + 3,
+ GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC464] + 3)
+ == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC464;
+ else if (strcmp (str + 3,
+ GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC476] + 3)
+ == 0)
+ return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC476;
}
return -1;
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 44 +++++
ports/ChangeLog.powerpc | 13 ++
ports/sysdeps/powerpc/dl-procinfo.c | 96 ----------
ports/sysdeps/powerpc/dl-procinfo.h | 194 --------------------
sysdeps/powerpc/bits/hwcap.h | 16 ++-
sysdeps/powerpc/dl-procinfo.c | 16 +-
sysdeps/powerpc/dl-procinfo.h | 47 ++++-
.../power7 => powerpc/powerpc32/power8}/Implies | 0
.../power7 => powerpc/powerpc64/power8}/Implies | 0
.../sysv/linux/powerpc/powerpc32/power8/Implies | 2 +
.../sysv/linux/powerpc/powerpc64/power8/Implies | 2 +
11 files changed, 121 insertions(+), 309 deletions(-)
delete mode 100644 ports/sysdeps/powerpc/dl-procinfo.c
delete mode 100644 ports/sysdeps/powerpc/dl-procinfo.h
copy sysdeps/{unix/sysv/linux/powerpc/powerpc32/power7 => powerpc/powerpc32/power8}/Implies (100%)
copy sysdeps/{unix/sysv/linux/powerpc/powerpc64/power7 => powerpc/powerpc64/power8}/Implies (100%)
create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies
create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies
hooks/post-receive
--
GNU C Library master sources