PowerPC: Merge ports/ dl-procinfo.[ch] with base.

This commit is contained in:
Ryan S. Arnold 2013-06-11 09:32:41 -05:00
parent f22bc486c1
commit fac0c5f2b1
5 changed files with 124 additions and 80 deletions

View File

@ -1,3 +1,18 @@
2013-06-11 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-06-11 Andreas Schwab <schwab@suse.de>
[BZ #14991]

View File

@ -1,3 +1,8 @@
2013-06-11 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
* sysdeps/powerpc/dl-procinfo.h: Fix whitespace by correcting
spaces with tabs where appropriate.
2013-06-05 Joseph Myers <joseph@codesourcery.com>
* sysdeps/powerpc/nofpu/fenv_const.c: Remove trailing whitespace.

View File

@ -20,37 +20,37 @@
#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, 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))
@ -88,65 +88,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;

View File

@ -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
@ -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

View File

@ -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, but they are bits 7..31. */
#define _DL_HWCAP_FIRST 7
@ -30,12 +30,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
@ -47,6 +47,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))
@ -111,7 +115,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)
@ -127,6 +131,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;