mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
x86: Populate COMMON_CPUID_INDEX_80000001 for Intel CPUs [BZ #23459]
Reviewed-by: Carlos O'Donell <carlos@redhat.com> [BZ #23459] * sysdeps/x86/cpu-features.c (get_extended_indices): New function. (init_cpu_features): Call get_extended_indices for both Intel and AMD CPUs. * sysdeps/x86/cpu-features.h (COMMON_CPUID_INDEX_80000001): Remove "for AMD" comment.
This commit is contained in:
parent
65d87ade1e
commit
be525a69a6
@ -42,6 +42,20 @@ extern void TUNABLE_CALLBACK (set_x86_shstk) (tunable_val_t *)
|
||||
# include <cet-tunables.h>
|
||||
#endif
|
||||
|
||||
static void
|
||||
get_extended_indices (struct cpu_features *cpu_features)
|
||||
{
|
||||
unsigned int eax, ebx, ecx, edx;
|
||||
__cpuid (0x80000000, eax, ebx, ecx, edx);
|
||||
if (eax >= 0x80000001)
|
||||
__cpuid (0x80000001,
|
||||
cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].eax,
|
||||
cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].ebx,
|
||||
cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].ecx,
|
||||
cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].edx);
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
get_common_indeces (struct cpu_features *cpu_features,
|
||||
unsigned int *family, unsigned int *model,
|
||||
@ -224,6 +238,8 @@ init_cpu_features (struct cpu_features *cpu_features)
|
||||
get_common_indeces (cpu_features, &family, &model, &extended_model,
|
||||
&stepping);
|
||||
|
||||
get_extended_indices (cpu_features);
|
||||
|
||||
if (family == 0x06)
|
||||
{
|
||||
model += extended_model;
|
||||
@ -338,16 +354,9 @@ init_cpu_features (struct cpu_features *cpu_features)
|
||||
get_common_indeces (cpu_features, &family, &model, &extended_model,
|
||||
&stepping);
|
||||
|
||||
ecx = cpu_features->cpuid[COMMON_CPUID_INDEX_1].ecx;
|
||||
get_extended_indices (cpu_features);
|
||||
|
||||
unsigned int eax;
|
||||
__cpuid (0x80000000, eax, ebx, ecx, edx);
|
||||
if (eax >= 0x80000001)
|
||||
__cpuid (0x80000001,
|
||||
cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].eax,
|
||||
cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].ebx,
|
||||
cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].ecx,
|
||||
cpu_features->cpuid[COMMON_CPUID_INDEX_80000001].edx);
|
||||
ecx = cpu_features->cpuid[COMMON_CPUID_INDEX_1].ecx;
|
||||
|
||||
if (HAS_ARCH_FEATURE (AVX_Usable))
|
||||
{
|
||||
|
@ -108,7 +108,7 @@ enum
|
||||
{
|
||||
COMMON_CPUID_INDEX_1 = 0,
|
||||
COMMON_CPUID_INDEX_7,
|
||||
COMMON_CPUID_INDEX_80000001, /* for AMD */
|
||||
COMMON_CPUID_INDEX_80000001,
|
||||
/* Keep the following line at the end. */
|
||||
COMMON_CPUID_INDEX_MAX
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user