aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/x86/cpu-features.h
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-05-23 20:22:13 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-05-24 06:35:25 -0700
commit42419536fd1effe9a05fa4efa92742b52e2ffae8 (patch)
treef33e4d3b507a9978e481064886e1cd56284df13a /sysdeps/x86/cpu-features.h
parent9c450f6f6f0e2089b780d0510ae6153740fc7d1d (diff)
downloadglibc-hjl/cacheinfo/master.tar.xz
glibc-hjl/cacheinfo/master.zip
x86: Add cache info to cpu_featureshjl/cacheinfo/master
This patch adds cache info to cpu_features to support tunables for both cache info as well as CPU features in a single x86 namespace. Since init_cacheinfo is in libc.so and cpu_features is in ld.so, cache info and CPU features must be in a place for tunables. * sysdeps/x86/cacheinfo.c (init_cacheinfo): Use data_size, shared_size and non_temporal_threshold from cpu_features if they aren't zero. * sysdeps/x86/cpu-features.h (cache_info): New. (cpu_features): Add cache.
Diffstat (limited to 'sysdeps/x86/cpu-features.h')
-rw-r--r--sysdeps/x86/cpu-features.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/sysdeps/x86/cpu-features.h b/sysdeps/x86/cpu-features.h
index 31c7c8023e..f428dca67b 100644
--- a/sysdeps/x86/cpu-features.h
+++ b/sysdeps/x86/cpu-features.h
@@ -185,6 +185,18 @@
#else /* __ASSEMBLER__ */
+struct cache_info
+{
+ /* Data cache size for use in memory and string routines, typically
+ L1 size. */
+ long int data_size;
+ /* Shared cache size for use in memory and string routines, typically
+ L2 or L3 size. */
+ long int shared_size;
+ /* Threshold to use non temporal store. */
+ long int non_temporal_threshold;
+};
+
enum
{
COMMON_CPUID_INDEX_1 = 0,
@@ -214,6 +226,7 @@ struct cpu_features
unsigned int family;
unsigned int model;
unsigned int feature[FEATURE_INDEX_MAX];
+ struct cache_info cache;
};
/* Used from outside of glibc to get access to the CPU features