mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 10:22:41 +08:00
* sysdeps/x86_64/cacheinfo.c (__x86_64_shared_cache_size): Define.
(init_cacheinfo): Initialize it. * sysdeps/x86_64/memset.S: Use __x86_64_shared_cache_size. Always define bzero. Remove non-glibc code. * sysdeps/x86_64/bzero.S: Make an empty file. 2007-10-15 H.J. Lu <hongjiu.lu@intel.com> * sysdeps/x86_64/cacheinfo.c (__x86_64_preferred_memory_instruction): New. (init_cacheinfo): Initialize __x86_64_preferred_memory_instruction. * sysdeps/x86_64/memset.S: Rewrite. * nss/getXXbyYY_r.c (REENTRANT_NAME): Mangle startp and start_fct
This commit is contained in:
parent
340779f775
commit
e2b393bc69
19
ChangeLog
19
ChangeLog
@ -1,10 +1,27 @@
|
||||
2007-10-15 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/x86_64/cacheinfo.c (__x86_64_shared_cache_size): Define.
|
||||
(init_cacheinfo): Initialize it.
|
||||
* sysdeps/x86_64/memset.S: Use __x86_64_shared_cache_size.
|
||||
Always define bzero.
|
||||
Remove non-glibc code.
|
||||
* sysdeps/x86_64/bzero.S: Make an empty file.
|
||||
|
||||
2007-10-15 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* sysdeps/x86_64/cacheinfo.c
|
||||
(__x86_64_preferred_memory_instruction): New.
|
||||
(init_cacheinfo): Initialize __x86_64_preferred_memory_instruction.
|
||||
|
||||
* sysdeps/x86_64/memset.S: Rewrite.
|
||||
|
||||
2007-10-15 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* po/libc.pot: Regenerated.
|
||||
|
||||
2007-10-15 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* nss/getXXbyYY_r.c (REENTRANT_NAME): Mangle start and start_fct
|
||||
* nss/getXXbyYY_r.c (REENTRANT_NAME): Mangle startp and start_fct
|
||||
pointers.
|
||||
|
||||
[BZ #3425]
|
||||
|
@ -404,9 +404,20 @@ long int __x86_64_data_cache_size_half attribute_hidden = 32 * 1024 / 2;
|
||||
/* Shared cache size for use in memory and string routines, typically
|
||||
L2 or L3 size. */
|
||||
long int __x86_64_shared_cache_size_half attribute_hidden = 1024 * 1024 / 2;
|
||||
long int __x86_64_shared_cache_size attribute_hidden = 1024 * 1024;
|
||||
/* PREFETCHW support flag for use in memory and string routines. */
|
||||
int __x86_64_prefetchw attribute_hidden;
|
||||
|
||||
/* Instructions preferred for memory and string routines.
|
||||
|
||||
0: Regular instructions
|
||||
1: MMX instructions
|
||||
2: SSE2 instructions
|
||||
3: SSSE3 instructions
|
||||
|
||||
*/
|
||||
int __x86_64_preferred_memory_instruction attribute_hidden;
|
||||
|
||||
|
||||
static void
|
||||
__attribute__((constructor))
|
||||
@ -444,6 +455,17 @@ init_cacheinfo (void)
|
||||
shared = handle_intel (_SC_LEVEL2_CACHE_SIZE, max_cpuid);
|
||||
}
|
||||
|
||||
asm volatile ("cpuid"
|
||||
: "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
|
||||
: "0" (1));
|
||||
|
||||
/* Intel prefers SSSE3 instructions for memory/string rountines
|
||||
if they are avaiable. */
|
||||
if ((ecx & 0x200))
|
||||
__x86_64_preferred_memory_instruction = 3;
|
||||
else
|
||||
__x86_64_preferred_memory_instruction = 2;
|
||||
|
||||
/* Figure out the number of logical threads that share the
|
||||
highest cache level. */
|
||||
if (max_cpuid >= 4)
|
||||
@ -472,9 +494,6 @@ init_cacheinfo (void)
|
||||
{
|
||||
intel_bug_no_cache_info:
|
||||
/* Assume that all logical threads share the highest cache level. */
|
||||
asm volatile ("cpuid"
|
||||
: "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
|
||||
: "0" (1));
|
||||
|
||||
threads = (ebx >> 16) & 0xff;
|
||||
}
|
||||
@ -549,5 +568,8 @@ init_cacheinfo (void)
|
||||
__x86_64_data_cache_size_half = data / 2;
|
||||
|
||||
if (shared > 0)
|
||||
__x86_64_shared_cache_size_half = shared / 2;
|
||||
{
|
||||
__x86_64_shared_cache_size_half = shared / 2;
|
||||
__x86_64_shared_cache_size = shared;
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user