diff options
author | Ulrich Drepper <drepper@redhat.com> | 2009-05-31 17:52:05 -0700 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2009-05-31 17:52:05 -0700 |
commit | 963cb6fcb47ca212c0c57cc57bd7510f6549579c (patch) | |
tree | e0b12d2f0af3a97193aaa12a7162e6c38b828a4f /sysdeps/x86_64/multiarch/init-arch.c | |
parent | fd469aac31dc09f1328c8c4b976f887ebd592c56 (diff) | |
download | glibc-963cb6fcb47ca212c0c57cc57bd7510f6549579c.tar glibc-963cb6fcb47ca212c0c57cc57bd7510f6549579c.tar.gz glibc-963cb6fcb47ca212c0c57cc57bd7510f6549579c.tar.bz2 glibc-963cb6fcb47ca212c0c57cc57bd7510f6549579c.zip |
Simplify CPUID value handling.
SO far Intel and AMD use exactly the same bits meaning the same
things in CPUID index 1. Simplify the code. Should an architecture
come along which doesn't use the same semantics then it must use a
different index value than COMMON_CPUID_INDEX_1.
Diffstat (limited to 'sysdeps/x86_64/multiarch/init-arch.c')
-rw-r--r-- | sysdeps/x86_64/multiarch/init-arch.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/sysdeps/x86_64/multiarch/init-arch.c b/sysdeps/x86_64/multiarch/init-arch.c index eb4365fe32..ec0eb29faf 100644 --- a/sysdeps/x86_64/multiarch/init-arch.c +++ b/sysdeps/x86_64/multiarch/init-arch.c @@ -1,6 +1,6 @@ /* Initialize CPU feature data. This file is part of the GNU C Library. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 2009 Free Software Foundation, Inc. Contributed by Ulrich Drepper <drepper@redhat.com>. The GNU C Library is free software; you can redistribute it and/or @@ -41,11 +41,12 @@ __init_cpu_features (void) { __cpu_features.kind = arch_kind_intel; + get_common_cpuid: asm volatile ("cpuid" - : "=a" (__cpu_features.cpuid[INTEL_CPUID_INDEX_1].eax), - "=b" (__cpu_features.cpuid[INTEL_CPUID_INDEX_1].ebx), - "=c" (__cpu_features.cpuid[INTEL_CPUID_INDEX_1].ecx), - "=d" (__cpu_features.cpuid[INTEL_CPUID_INDEX_1].edx) + : "=a" (__cpu_features.cpuid[COMMON_CPUID_INDEX_1].eax), + "=b" (__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ebx), + "=c" (__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx), + "=d" (__cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx) : "0" (1)); } /* This spells out "AuthenticAMD". */ @@ -53,12 +54,7 @@ __init_cpu_features (void) { __cpu_features.kind = arch_kind_amd; - asm volatile ("cpuid" - : "=a" (__cpu_features.cpuid[AMD_CPUID_INDEX_1].eax), - "=b" (__cpu_features.cpuid[AMD_CPUID_INDEX_1].ebx), - "=c" (__cpu_features.cpuid[AMD_CPUID_INDEX_1].ecx), - "=d" (__cpu_features.cpuid[AMD_CPUID_INDEX_1].edx) - : "0" (1)); + goto get_common_cpuid; } else __cpu_features.kind = arch_kind_other; |