Check if cpuid is available in init_cpu_features
Since not all i486 processors support cpuid, we call __get_cpuid_max to check if cpuid is available before using it if not compiling for i586, i686 nor x86-64. * sysdeps/x86/cpu-features.c (init_cpu_features): Call __get_cpuid_max if not compiling for i586, i686 nor x86-64.
This commit is contained in:
parent
e54388bd8b
commit
a5cf909b8f
@ -1,3 +1,8 @@
|
|||||||
|
2015-08-13 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* sysdeps/x86/cpu-features.c (init_cpu_features): Call
|
||||||
|
__get_cpuid_max if not compiling for i586, i686 nor x86-64.
|
||||||
|
|
||||||
2015-08-13 H.J. Lu <hongjiu.lu@intel.com>
|
2015-08-13 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/x86/elision-conf.h: Don't include
|
* sysdeps/unix/sysv/linux/x86/elision-conf.h: Don't include
|
||||||
|
@ -40,6 +40,14 @@ init_cpu_features (struct cpu_features *cpu_features)
|
|||||||
unsigned int model = 0;
|
unsigned int model = 0;
|
||||||
enum cpu_features_kind kind;
|
enum cpu_features_kind kind;
|
||||||
|
|
||||||
|
#if !defined __i586__ && !defined __i686__ && !defined __x86_64__
|
||||||
|
if (__get_cpuid_max (0, 0) == 0)
|
||||||
|
{
|
||||||
|
kind = arch_kind_other;
|
||||||
|
goto no_cpuid;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
__cpuid (0, cpu_features->max_cpuid, ebx, ecx, edx);
|
__cpuid (0, cpu_features->max_cpuid, ebx, ecx, edx);
|
||||||
|
|
||||||
/* This spells out "GenuineIntel". */
|
/* This spells out "GenuineIntel". */
|
||||||
@ -196,6 +204,10 @@ init_cpu_features (struct cpu_features *cpu_features)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !defined __i586__ && !defined __i686__ && !defined __x86_64__
|
||||||
|
no_cpuid:
|
||||||
|
#endif
|
||||||
|
|
||||||
cpu_features->family = family;
|
cpu_features->family = family;
|
||||||
cpu_features->model = model;
|
cpu_features->model = model;
|
||||||
cpu_features->kind = kind;
|
cpu_features->kind = kind;
|
||||||
|
Loading…
Reference in New Issue
Block a user