diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-05-10 05:42:49 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2016-05-14 09:19:01 -0700 |
commit | 4292da19f08b9d5e804909232489622bee6a60e3 (patch) | |
tree | cb1ce5dd222b533113b65d75a039ef8e7d60d358 /sysdeps/x86/cpu-features.h | |
parent | 1fa001e37c3c62748b5ab00c30f9f3f0c7209286 (diff) | |
download | glibc-hjl/ld.so/master.tar glibc-hjl/ld.so/master.tar.gz glibc-hjl/ld.so/master.tar.bz2 glibc-hjl/ld.so/master.zip |
X86: Add cache info to _dl_x86_cpu_featureshjl/ld.so/master
This patch adds cache info to _dl_x86_cpu_features to allow a processor
to override cache info derived from CPUID.
Tested on x86 and x86-64.
* sysdeps/x86/cacheinfo.c: Skip if not in libc.
(init_cacheinfo): Use raw_data_size, raw_shared_size and
shared_non_temporal_threshold from _dl_x86_cpu_features if
not 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.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/sysdeps/x86/cpu-features.h b/sysdeps/x86/cpu-features.h index 9529d61ff5..335d96a3e1 100644 --- a/sysdeps/x86/cpu-features.h +++ b/sysdeps/x86/cpu-features.h @@ -164,6 +164,18 @@ #else /* __ASSEMBLER__ */ +struct cache_info +{ + /* Data cache size for use in memory and string routines, typically + L1 size. */ + long int raw_data_size; + /* Shared cache size for use in memory and string routines, typically + L2 or L3 size. */ + long int raw_shared_size; + /* Threshold to use non temporal store. */ + long int shared_non_temporal_threshold; +}; + enum { COMMON_CPUID_INDEX_1 = 0, @@ -193,6 +205,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 |