glibc/sysdeps/x86
H.J. Lu 9620398097 x86: Install <sys/platform/x86.h> [BZ #26124]
Install <sys/platform/x86.h> so that programmers can do

 #if __has_include(<sys/platform/x86.h>)
 #include <sys/platform/x86.h>
 #endif
 ...

   if (CPU_FEATURE_USABLE (SSE2))
 ...
   if (CPU_FEATURE_USABLE (AVX2))
 ...

<sys/platform/x86.h> exports only:

enum
{
  COMMON_CPUID_INDEX_1 = 0,
  COMMON_CPUID_INDEX_7,
  COMMON_CPUID_INDEX_80000001,
  COMMON_CPUID_INDEX_D_ECX_1,
  COMMON_CPUID_INDEX_80000007,
  COMMON_CPUID_INDEX_80000008,
  COMMON_CPUID_INDEX_7_ECX_1,
  /* Keep the following line at the end.  */
  COMMON_CPUID_INDEX_MAX
};

struct cpuid_features
{
  struct cpuid_registers cpuid;
  struct cpuid_registers usable;
};

struct cpu_features
{
  struct cpu_features_basic basic;
  struct cpuid_features features[COMMON_CPUID_INDEX_MAX];
};

/* Get a pointer to the CPU features structure.  */
extern const struct cpu_features *__x86_get_cpu_features
  (unsigned int max) __attribute__ ((const));

Since all feature checks are done through macros, programs compiled with
a newer <sys/platform/x86.h> are compatible with the older glibc binaries
as long as the layout of struct cpu_features is identical.  The features
array can be expanded with backward binary compatibility for both .o and
.so files.  When COMMON_CPUID_INDEX_MAX is increased to support new
processor features, __x86_get_cpu_features in the older glibc binaries
returns NULL and HAS_CPU_FEATURE/CPU_FEATURE_USABLE return false on the
new processor feature.  No new symbol version is neeeded.

Both CPU_FEATURE_USABLE and HAS_CPU_FEATURE are provided.  HAS_CPU_FEATURE
can be used to identify processor features.

Note: Although GCC has __builtin_cpu_supports, it only supports a subset
of <sys/platform/x86.h> and it is equivalent to CPU_FEATURE_USABLE.  It
doesn't support HAS_CPU_FEATURE.
2020-09-11 17:20:52 -07:00
..
bits semaphore: consolidate arch headers into a generic one 2020-05-06 13:07:12 -07:00
fpu i386: Use builtin sqrtl 2020-06-22 11:09:49 -03:00
include x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
nptl
sys/platform x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
Makeconfig
Makefile x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
Versions x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
__longjmp_cancel.S
atomic-machine.h
cacheinfo.c x86: Support usable check for all CPU features 2020-07-13 06:05:16 -07:00
cet-control.h x86: Move CET control to _dl_x86_feature_control [BZ #25887] 2020-05-18 06:15:02 -07:00
check-cet.awk
configure x86: Add --enable-cet=permissive 2020-05-18 08:38:53 -07:00
configure.ac x86: Add --enable-cet=permissive 2020-05-18 08:38:53 -07:00
cpu-features-offsets.sym
cpu-features.c x86: Set CPU usable feature bits conservatively [BZ #26552] 2020-09-03 04:36:20 -07:00
cpu-tunables.c x86: Support usable check for all CPU features 2020-07-13 06:05:16 -07:00
dl-cet.c x86: Support usable check for all CPU features 2020-07-13 06:05:16 -07:00
dl-get-cpu-features.c x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
dl-hwcap.h
dl-lookupcfg.h
dl-procinfo.c
dl-procinfo.h
dl-procruntime.c x86: Add --enable-cet=permissive 2020-05-18 08:38:53 -07:00
dl-prop.h rtld: Clean up PT_NOTE and add PT_GNU_PROPERTY handling 2020-07-08 14:28:53 +01:00
dl-tunables.list x86: Add thresholds for "rep movsb/stosb" to tunables 2020-07-06 11:48:42 -07:00
elf-initfini.h
elide.h
float128-abi.h
fpu_control.h
hp-timing.h
init-arch.h x86: Remove __ASSEMBLER__ check in init-arch.h 2020-07-11 10:03:05 -07:00
jmp_buf-ssp.sym
ldsodefs.h x86: Move CET control to _dl_x86_feature_control [BZ #25887] 2020-05-18 06:15:02 -07:00
libc-start.c
libc-start.h
link_map.h
linkmap.h
longjmp.c
string_private.h
sysdep.h
tininess.h
tst-cet-legacy-1.c
tst-cet-legacy-1a.c
tst-cet-legacy-2.c
tst-cet-legacy-2a.c
tst-cet-legacy-3.c
tst-cet-legacy-4.c
tst-cet-legacy-4a.c
tst-cet-legacy-4b.c
tst-cet-legacy-4c.c
tst-cet-legacy-5.c x86: Add --enable-cet=permissive 2020-05-18 08:38:53 -07:00
tst-cet-legacy-5a.c
tst-cet-legacy-5b.c
tst-cet-legacy-6.c x86: Add --enable-cet=permissive 2020-05-18 08:38:53 -07:00
tst-cet-legacy-6a.c
tst-cet-legacy-6b.c
tst-cet-legacy-7.c
tst-cet-legacy-8.c
tst-cet-legacy-mod-1.c
tst-cet-legacy-mod-2.c
tst-cet-legacy-mod-4.c
tst-cet-legacy-mod-5.c
tst-cet-legacy-mod-5a.c
tst-cet-legacy-mod-5b.c
tst-cet-legacy-mod-5c.c
tst-cet-legacy-mod-6.c
tst-cet-legacy-mod-6a.c
tst-cet-legacy-mod-6b.c
tst-cet-legacy-mod-6c.c
tst-cet-legacy-mod-6d.c
tst-cpu-features-cpuinfo.c x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
tst-cpu-features-supports.c x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
tst-get-cpu-features-static.c
tst-get-cpu-features.c x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00