1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00

* elf/dl-support.c: Include dl-procinfo.h.

* sysdeps/powerpc/dl-procinfo.h (PPC_PLATFORM_POWER4,
	PPC_PLATFORM_PPC970, PPC_PLATFORM_POWER5, PPC_PLATFORM_POWER5_PLUS,
	PPC_PLATFORM_POWER6, PPC_PLATFORM_CELL_BE, PPC_PLATFORM_POWER6X):
	Define.
	(_dl_string_platform): Use PPC_PLATFORM_* macros instead of
	hardcoded constants.
	* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platform): Use
	PPC_PLATFORM_* macros for array designators.

2006-11-11  Steven Munroe  <sjmunroe@us.ibm.com>

	* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 3 new cap
	names to the beginning.
	(_dl_powerpc_platforms): Add "power6x".
	* sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease.
	(HWCAP_IMPORTANT): Add PPC_FEATURE_HAS_DFP.
	(_DL_PLATFORMS_COUNT): Increase.
	(_dl_string_platform): Handle power6x case.
	* sysdeps/powerpc/sysdep.h (PPC_FEATURE_PA6T, PPC_FEATURE_HAS_DFP,
	PPC_FEATURE_POWER6_EXT): Define.
	(PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS): Correct Comment.
This commit is contained in:
Ulrich Drepper
2006-12-19 15:30:39 +00:00
parent 5bcba0ed52
commit 594d423aa3
5 changed files with 77 additions and 19 deletions

View File

@ -1,3 +1,28 @@
2006-11-28 Jakub Jelinek <jakub@redhat.com>
* elf/dl-support.c: Include dl-procinfo.h.
* sysdeps/powerpc/dl-procinfo.h (PPC_PLATFORM_POWER4,
PPC_PLATFORM_PPC970, PPC_PLATFORM_POWER5, PPC_PLATFORM_POWER5_PLUS,
PPC_PLATFORM_POWER6, PPC_PLATFORM_CELL_BE, PPC_PLATFORM_POWER6X):
Define.
(_dl_string_platform): Use PPC_PLATFORM_* macros instead of
hardcoded constants.
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platform): Use
PPC_PLATFORM_* macros for array designators.
2006-11-11 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 3 new cap
names to the beginning.
(_dl_powerpc_platforms): Add "power6x".
* sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease.
(HWCAP_IMPORTANT): Add PPC_FEATURE_HAS_DFP.
(_DL_PLATFORMS_COUNT): Increase.
(_dl_string_platform): Handle power6x case.
* sysdeps/powerpc/sysdep.h (PPC_FEATURE_PA6T, PPC_FEATURE_HAS_DFP,
PPC_FEATURE_POWER6_EXT): Define.
(PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS): Correct Comment.
2006-12-18 Jakub Jelinek <jakub@redhat.com> 2006-12-18 Jakub Jelinek <jakub@redhat.com>
[BZ #3747] [BZ #3747]

View File

@ -29,6 +29,7 @@
#include <bits/libc-lock.h> #include <bits/libc-lock.h>
#include <dl-cache.h> #include <dl-cache.h>
#include <dl-librecon.h> #include <dl-librecon.h>
#include <dl-procinfo.h>
#include <unsecvars.h> #include <unsecvars.h>
#include <hp-timing.h> #include <hp-timing.h>

View File

@ -46,10 +46,11 @@
#if !defined PROCINFO_DECL && defined SHARED #if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_cap_flags ._dl_powerpc_cap_flags
#else #else
PROCINFO_CLASS const char _dl_powerpc_cap_flags[20][10] PROCINFO_CLASS const char _dl_powerpc_cap_flags[23][10]
#endif #endif
#ifndef PROCINFO_DECL #ifndef PROCINFO_DECL
= { = {
"power6x", "dfp", "pa6t",
"arch_2_05", "ic_snoop", "smt", "booke", "arch_2_05", "ic_snoop", "smt", "booke",
"cellbe", "power5+", "power5", "power4", "cellbe", "power5+", "power5", "power4",
"notb", "efpdouble", "efpsingle", "spe", "notb", "efpdouble", "efpsingle", "spe",
@ -66,11 +67,17 @@ PROCINFO_CLASS const char _dl_powerpc_cap_flags[20][10]
#if !defined PROCINFO_DECL && defined SHARED #if !defined PROCINFO_DECL && defined SHARED
._dl_powerpc_platforms ._dl_powerpc_platforms
#else #else
PROCINFO_CLASS const char _dl_powerpc_platforms[6][12] PROCINFO_CLASS const char _dl_powerpc_platforms[7][12]
#endif #endif
#ifndef PROCINFO_DECL #ifndef PROCINFO_DECL
= { = {
"power4", "ppc970", "power5", "power5+", "power6", "ppc-cell-be" [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"
} }
#endif #endif
#if !defined SHARED || defined PROCINFO_DECL #if !defined SHARED || defined PROCINFO_DECL

View File

@ -24,19 +24,29 @@
#include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */ #include <sysdep.h> /* This defines the PPC_FEATURE_* macros. */
/* There are 20 bits used, but they are bits 12..31. */ /* There are 20 bits used, but they are bits 12..31. */
#define _DL_HWCAP_FIRST 12 #define _DL_HWCAP_FIRST 9
#define _DL_HWCAP_COUNT 32 #define _DL_HWCAP_COUNT 32
/* These bits influence library search. */ /* These bits influence library search. */
#define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC) #define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \
+ PPC_FEATURE_HAS_DFP)
#define _DL_PLATFORMS_COUNT 6 #define _DL_PLATFORMS_COUNT 7
#define _DL_FIRST_PLATFORM 32 #define _DL_FIRST_PLATFORM 32
/* Mask to filter out platforms. */ /* Mask to filter out platforms. */
#define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \ #define _DL_HWCAP_PLATFORM (((1ULL << _DL_PLATFORMS_COUNT) - 1) \
<< _DL_FIRST_PLATFORM) << _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
static inline const char * static inline const char *
__attribute__ ((unused)) __attribute__ ((unused))
_dl_hwcap_string (int idx) _dl_hwcap_string (int idx)
@ -68,22 +78,30 @@ _dl_string_platform (const char *str)
if (str == NULL) if (str == NULL)
return -1; return -1;
if (strncmp (str, GLRO(dl_powerpc_platforms)[0], 5) == 0) if (strncmp (str, GLRO(dl_powerpc_platforms)[PPC_PLATFORM_POWER4], 5) == 0)
{ {
int ret; int ret;
str += 5; str += 5;
switch (*str) switch (*str)
{ {
case '4': case '4':
ret = _DL_FIRST_PLATFORM + 0; ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER4;
break; break;
case '5': case '5':
ret = _DL_FIRST_PLATFORM + 2; ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER5;
if (str[1] == '+') if (str[1] == '+')
++ret, ++str; {
ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER5_PLUS;
++str;
}
break; break;
case '6': case '6':
ret = _DL_FIRST_PLATFORM + 4; ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER6;
if (str[1] == 'x')
{
ret = _DL_FIRST_PLATFORM + PPC_PLATFORM_POWER6X;
++str;
}
break; break;
default: default:
return -1; return -1;
@ -91,12 +109,16 @@ _dl_string_platform (const char *str)
if (str[1] == '\0') if (str[1] == '\0')
return ret; return ret;
} }
else if (strncmp (str, GLRO(dl_powerpc_platforms)[1], 3) == 0) else if (strncmp (str, GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC970],
3) == 0)
{ {
if (strcmp (str + 3, GLRO(dl_powerpc_platforms)[1] + 3) == 0) if (strcmp (str + 3, GLRO(dl_powerpc_platforms)[PPC_PLATFORM_PPC970]
return _DL_FIRST_PLATFORM + 1; + 3) == 0)
else if (strcmp (str + 3, GLRO(dl_powerpc_platforms)[5] + 3) == 0) return _DL_FIRST_PLATFORM + PPC_PLATFORM_PPC970;
return _DL_FIRST_PLATFORM + 5; else if (strcmp (str + 3,
GLRO(dl_powerpc_platforms)[PPC_PLATFORM_CELL_BE] + 3)
== 0)
return _DL_FIRST_PLATFORM + PPC_PLATFORM_CELL_BE;
} }
return -1; return -1;

View File

@ -34,13 +34,16 @@
#define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 /* SPE Double. */ #define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 /* SPE Double. */
#define PPC_FEATURE_NO_TB 0x00100000 /* 601/403gx have no timebase */ #define PPC_FEATURE_NO_TB 0x00100000 /* 601/403gx have no timebase */
#define PPC_FEATURE_POWER4 0x00080000 /* POWER4 ISA 2.00 */ #define PPC_FEATURE_POWER4 0x00080000 /* POWER4 ISA 2.00 */
#define PPC_FEATURE_POWER5 0x00040000 /* POWER5 ISA 2.01 */ #define PPC_FEATURE_POWER5 0x00040000 /* POWER5 ISA 2.02 */
#define PPC_FEATURE_POWER5_PLUS 0x00020000 /* 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_CELL_BE 0x00010000 /* CELL Broadband Engine */
#define PPC_FEATURE_BOOKE 0x00008000 #define PPC_FEATURE_BOOKE 0x00008000
#define PPC_FEATURE_SMT 0x00004000 #define PPC_FEATURE_SMT 0x00004000 /* Simultaneous Multi-Threading */
#define PPC_FEATURE_ICACHE_SNOOP 0x00002000 #define PPC_FEATURE_ICACHE_SNOOP 0x00002000
#define PPC_FEATURE_ARCH_2_05 0x00001000 /* ISA 2.05 */ #define PPC_FEATURE_ARCH_2_05 0x00001000 /* ISA 2.05 */
#define PPC_FEATURE_PA6T 0x00000800 /* PA Semi 6T Core */
#define PPC_FEATURE_HAS_DFP 0x00000400 /* Decimal FP Unit */
#define PPC_FEATURE_POWER6_EXT 0x00000200 /* P6 + mffgpr/mftgpr */
#define PPC_FEATURE_970 (PPC_FEATURE_POWER4 + PPC_FEATURE_HAS_ALTIVEC) #define PPC_FEATURE_970 (PPC_FEATURE_POWER4 + PPC_FEATURE_HAS_ALTIVEC)
#ifdef __ASSEMBLER__ #ifdef __ASSEMBLER__