]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
x86: Correct index_cpu_LZCNT [BZ #23456]
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 29 Jul 2018 13:08:59 +0000 (06:08 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 29 Jul 2018 13:26:35 +0000 (06:26 -0700)
cpu-features.h has

 #define bit_cpu_LZCNT (1 << 5)
 #define index_cpu_LZCNT COMMON_CPUID_INDEX_1
 #define reg_LZCNT

But the LZCNT feature bit is in COMMON_CPUID_INDEX_80000001:

Initial EAX Value: 80000001H
ECX Extended Processor Signature and Feature Bits:
Bit 05: LZCNT available

index_cpu_LZCNT should be COMMON_CPUID_INDEX_80000001, not
COMMON_CPUID_INDEX_1.  The VMX feature bit is in COMMON_CPUID_INDEX_1:

Initial EAX Value: 01H
Feature Information Returned in the ECX Register:
5 VMX

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
[BZ #23456]
* sysdeps/x86/cpu-features.h (index_cpu_LZCNT): Set to
COMMON_CPUID_INDEX_80000001.

(cherry picked from commit 65d87ade1ee6f3ac099105e3511bd09bdc24cf3f)

ChangeLog
NEWS
sysdeps/x86/cpu-features.h

index 39d910f3e21d39e05052893e66a6f9d7e28414df..831579524d6a9624c4955b4631a2a45d6fad4551 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-07-29  H.J. Lu  <hongjiu.lu@intel.com>
+
+       [BZ #23456]
+       * sysdeps/x86/cpu-features.h (index_cpu_LZCNT): Set to
+       COMMON_CPUID_INDEX_80000001.
+
 2018-07-06  Florian Weimer  <fweimer@redhat.com>
 
        * conform/conformtest.pl (checknamespace): Escape literal braces
diff --git a/NEWS b/NEWS
index fa6218105ac9e279fddcd82981af7c09aeded1de..e0c11b1ea96486841498aeedbd4e9f17a61a1334 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -147,6 +147,7 @@ The following bugs are resolved with this release:
   [23313] libio: Disable vtable validation in case of interposition
   [23349] Various glibc headers no longer compatible with <linux/time.h>
   [23363] stdio-common/tst-printf.c has non-free license
+  [23456] Wrong index_cpu_LZCNT
 \f
 Version 2.26
 
index 1d88f7a68c1a35899dbb6e0f5864e1c8cf655479..a6fae060143201af601a064f14a3185796251b96 100644 (file)
@@ -292,7 +292,7 @@ extern const struct cpu_features *__get_cpu_features (void)
 # define index_cpu_HTT         COMMON_CPUID_INDEX_1
 # define index_cpu_BMI1                COMMON_CPUID_INDEX_7
 # define index_cpu_BMI2                COMMON_CPUID_INDEX_7
-# define index_cpu_LZCNT       COMMON_CPUID_INDEX_1
+# define index_cpu_LZCNT       COMMON_CPUID_INDEX_80000001
 # define index_cpu_MOVBE       COMMON_CPUID_INDEX_1
 # define index_cpu_POPCNT      COMMON_CPUID_INDEX_1