You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.4 KiB
70 lines
2.4 KiB
commit 911569d02dec023d949d96aa7b0e828c91c06f55 |
|
Author: Carlos Eduardo Seo <cseo@linux.vnet.ibm.com> |
|
Date: Mon Dec 28 16:36:46 2015 -0200 |
|
|
|
powerpc: Fix dl-procinfo HWCAP |
|
|
|
HWCAP-related code should had been updated when the 32 bits of HWCAP were |
|
used. This patch updates the code in dl-procinfo.h to loop through all |
|
the 32 bits in HWCAP and updates _dl_powerpc_cap_flags accordingly. |
|
|
|
diff --git a/sysdeps/powerpc/dl-procinfo.c b/sysdeps/powerpc/dl-procinfo.c |
|
index 6e7850e..0b55906 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[60][10] |
|
+PROCINFO_CLASS const char _dl_powerpc_cap_flags[64][10] |
|
#endif |
|
#ifndef PROCINFO_DECL |
|
= { |
|
- "ppcle", "true_le", "archpmu", "vsx", |
|
+ "ppcle", "true_le", "", "", |
|
+ "", "", "archpmu", "vsx", |
|
"arch_2_06", "power6x", "dfp", "pa6t", |
|
"arch_2_05", "ic_snoop", "smt", "booke", |
|
"cellbe", "power5+", "power5", "power4", |
|
diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h |
|
index bce3a49..2187c5e 100644 |
|
--- a/sysdeps/powerpc/dl-procinfo.h |
|
+++ b/sysdeps/powerpc/dl-procinfo.h |
|
@@ -22,9 +22,6 @@ |
|
#include <ldsodefs.h> |
|
#include <sysdep.h> /* This defines the PPC_FEATURE[2]_* macros. */ |
|
|
|
-/* There are 28 bits used, but they are bits 4..31. */ |
|
-#define _DL_HWCAP_FIRST 4 |
|
- |
|
/* The total number of available bits (including those prior to |
|
_DL_HWCAP_FIRST). Some of these bits might not be used. */ |
|
#define _DL_HWCAP_COUNT 64 |
|
@@ -68,7 +65,7 @@ static inline const char * |
|
__attribute__ ((unused)) |
|
_dl_hwcap_string (int idx) |
|
{ |
|
- return GLRO(dl_powerpc_cap_flags)[idx - _DL_HWCAP_FIRST]; |
|
+ return GLRO(dl_powerpc_cap_flags)[idx]; |
|
} |
|
|
|
static inline const char * |
|
@@ -82,7 +79,7 @@ static inline int |
|
__attribute__ ((unused)) |
|
_dl_string_hwcap (const char *str) |
|
{ |
|
- for (int i = _DL_HWCAP_FIRST; i < _DL_HWCAP_COUNT; ++i) |
|
+ for (int i = 0; i < _DL_HWCAP_COUNT; ++i) |
|
if (strcmp (str, _dl_hwcap_string (i)) == 0) |
|
return i; |
|
return -1; |
|
@@ -180,7 +177,7 @@ _dl_procinfo (unsigned int type, unsigned long int word) |
|
case AT_HWCAP: |
|
_dl_printf ("AT_HWCAP: "); |
|
|
|
- for (int i = _DL_HWCAP_FIRST; i <= _DL_HWCAP_LAST; ++i) |
|
+ for (int i = 0; i <= _DL_HWCAP_LAST; ++i) |
|
if (word & (1 << i)) |
|
_dl_printf (" %s", _dl_hwcap_string (i)); |
|
break;
|
|
|