aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan S. Arnold <rsa@linux.vnet.ibm.com>2013-05-13 15:31:55 -0500
committerRyan S. Arnold <rsa@linux.vnet.ibm.com>2013-05-16 11:57:36 -0500
commitc796dcbe0df1184991f332f2eb955becff7e5770 (patch)
treec5803901a1f765a156633be53274255f79e9d062
parentf58f65cd7d3318d3af0073c782844d1a6008b111 (diff)
downloadglibc-c796dcbe0df1184991f332f2eb955becff7e5770.tar
glibc-c796dcbe0df1184991f332f2eb955becff7e5770.tar.gz
glibc-c796dcbe0df1184991f332f2eb955becff7e5770.tar.bz2
glibc-c796dcbe0df1184991f332f2eb955becff7e5770.zip
PowerPC: Merge ports/ dl-procinfo.[hc] with base.
-rw-r--r--ChangeLog15
-rw-r--r--ports/ChangeLog.powerpc5
-rw-r--r--ports/sysdeps/powerpc/dl-procinfo.h138
-rw-r--r--sysdeps/powerpc/dl-procinfo.c12
-rw-r--r--sysdeps/powerpc/dl-procinfo.h36
5 files changed, 125 insertions, 81 deletions
diff --git a/ChangeLog b/ChangeLog
index 56f8d11521..aa526f8343 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
2013-05-16 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-16 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
+
* elf/dl-support.c (_dl_aux_init): Add support for AT_HWCAP2.
* elf/dl-sysdep.c (_dl_sysdep_start, _dl_show_auxv): Likewise.
* misc/getauxval.c (__getauxval): Likewise.
diff --git a/ports/ChangeLog.powerpc b/ports/ChangeLog.powerpc
index 345df7b239..2857b27ac8 100644
--- a/ports/ChangeLog.powerpc
+++ b/ports/ChangeLog.powerpc
@@ -1,5 +1,10 @@
2013-05-16 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
+ * sysdeps/powerpc/dl-procinfo.h: Fix whitespace by correcting
+ spaces with tabs where appropriate.
+
+2013-05-16 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
+
* sysdeps/powerpc/dl-procinfo.h (_dl_procinfo): Add support for
displaying AT_HWCAP2 strings.
diff --git a/ports/sysdeps/powerpc/dl-procinfo.h b/ports/sysdeps/powerpc/dl-procinfo.h
index a9d98d34ef..d499cf1754 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 fb5051f1bf..0f5c2b3d6d 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 ca20732571..f24a0c6f11 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;