x86: Use __get_cpu_features to get cpu_features

Remove is_intel, is_amd and max_cpuid macros.  Use __get_cpu_features
to get cpu_features instead.

	* sysdeps/x86/cacheinfo.c (is_intel): Removed.
	(is_amd): Likewise.
	(max_cpuid): Likewise.
	(__cache_sysconf): Use __get_cpu_features to get cpu_features.
	(init_cacheinfo): Likewise.
This commit is contained in:
H.J. Lu 2017-05-24 06:28:37 -07:00
parent 666c0c5efa
commit 7c1d722554
2 changed files with 17 additions and 10 deletions

View File

@ -1,3 +1,11 @@
2017-05-24 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/x86/cacheinfo.c (is_intel): Removed.
(is_amd): Likewise.
(max_cpuid): Likewise.
(__cache_sysconf): Use __get_cpu_features to get cpu_features.
(init_cacheinfo): Likewise.
2017-05-23 Joseph Myers <joseph@codesourcery.com> 2017-05-23 Joseph Myers <joseph@codesourcery.com>
[BZ #21511] [BZ #21511]

View File

@ -23,10 +23,6 @@
#include <cpuid.h> #include <cpuid.h>
#include <init-arch.h> #include <init-arch.h>
#define is_intel GLRO(dl_x86_cpu_features).kind == arch_kind_intel
#define is_amd GLRO(dl_x86_cpu_features).kind == arch_kind_amd
#define max_cpuid GLRO(dl_x86_cpu_features).max_cpuid
static const struct intel_02_cache_info static const struct intel_02_cache_info
{ {
unsigned char idx; unsigned char idx;
@ -436,10 +432,12 @@ long int
attribute_hidden attribute_hidden
__cache_sysconf (int name) __cache_sysconf (int name)
{ {
if (is_intel) const struct cpu_features *cpu_features = __get_cpu_features ();
return handle_intel (name, max_cpuid);
if (is_amd) if (cpu_features->kind == arch_kind_intel)
return handle_intel (name, cpu_features->max_cpuid);
if (cpu_features->kind == arch_kind_amd)
return handle_amd (name); return handle_amd (name);
// XXX Fill in more vendors. // XXX Fill in more vendors.
@ -489,8 +487,10 @@ init_cacheinfo (void)
long int shared = -1; long int shared = -1;
unsigned int level; unsigned int level;
unsigned int threads = 0; unsigned int threads = 0;
const struct cpu_features *cpu_features = __get_cpu_features ();
int max_cpuid = cpu_features->max_cpuid;
if (is_intel) if (cpu_features->kind == arch_kind_intel)
{ {
data = handle_intel (_SC_LEVEL1_DCACHE_SIZE, max_cpuid); data = handle_intel (_SC_LEVEL1_DCACHE_SIZE, max_cpuid);
@ -691,8 +691,7 @@ intel_bug_no_cache_info:
shared += core; shared += core;
} }
} }
/* This spells out "AuthenticAMD". */ else if (cpu_features->kind == arch_kind_amd)
else if (is_amd)
{ {
data = handle_amd (_SC_LEVEL1_DCACHE_SIZE); data = handle_amd (_SC_LEVEL1_DCACHE_SIZE);
long int core = handle_amd (_SC_LEVEL2_CACHE_SIZE); long int core = handle_amd (_SC_LEVEL2_CACHE_SIZE);