From: Ryan S. Arnold Date: Mon, 13 May 2013 20:31:55 +0000 (-0500) Subject: PowerPC: Merge ports/ dl-procinfo.[hc] with base. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c796dcbe0df1184991f332f2eb955becff7e5770;p=thirdparty%2Fglibc.git PowerPC: Merge ports/ dl-procinfo.[hc] with base. --- diff --git a/ChangeLog b/ChangeLog index 56f8d115216..aa526f8343d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2013-05-16 Ryan S. Arnold + + * 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 * elf/dl-support.c (_dl_aux_init): Add support for AT_HWCAP2. diff --git a/ports/ChangeLog.powerpc b/ports/ChangeLog.powerpc index 345df7b239d..2857b27ac83 100644 --- a/ports/ChangeLog.powerpc +++ b/ports/ChangeLog.powerpc @@ -1,3 +1,8 @@ +2013-05-16 Ryan S. Arnold + + * sysdeps/powerpc/dl-procinfo.h: Fix whitespace by correcting + spaces with tabs where appropriate. + 2013-05-16 Ryan S. Arnold * 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 a9d98d34eff..d499cf17540 100644 --- a/ports/sysdeps/powerpc/dl-procinfo.h +++ b/ports/sysdeps/powerpc/dl-procinfo.h @@ -21,37 +21,37 @@ #include #include -#include /* This defines the PPC_FEATURE_* macros. */ +#include /* 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 fb5051f1bf8..0f5c2b3d6d3 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 . */ /* 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 ca207325712..f24a0c6f112 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 . */ #ifndef _DL_PROCINFO_H -#define _DL_PROCINFO_H 1 +#define _DL_PROCINFO_H 1 #include -#include /* This defines the PPC_FEATURE_* macros. */ +#include /* 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;