From 77f1fbaed8a0104de84dc62845e7f74169ab1c3f Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Mon, 1 Apr 2019 18:26:38 +0200 Subject: [PATCH] cputest: Fix comparison in checkCPUIDFeature in cpu-cpuid.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit leaf["eax"] & eax > 0 check works correctly only if there's at most 1 bit set in eax. Luckily that's been always the case, but fixing this could save us from future surprises. Signed-off-by: Jiri Denemark Reviewed-by: Ján Tomko --- tests/cputestdata/cpu-cpuid.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/cputestdata/cpu-cpuid.py b/tests/cputestdata/cpu-cpuid.py index 866c8047cd..0a2710689d 100755 --- a/tests/cputestdata/cpu-cpuid.py +++ b/tests/cputestdata/cpu-cpuid.py @@ -15,12 +15,12 @@ def checkFeature(cpuid, feature): if in_eax not in cpuid or in_ecx not in cpuid[in_eax]: return False - else: - leaf = cpuid[in_eax][in_ecx] - return ((eax > 0 and leaf["eax"] & eax > 0) or - (ebx > 0 and leaf["ebx"] & ebx > 0) or - (ecx > 0 and leaf["ecx"] & ecx > 0) or - (edx > 0 and leaf["edx"] & edx > 0)) + + leaf = cpuid[in_eax][in_ecx] + return ((eax > 0 and leaf["eax"] & eax == eax) or + (ebx > 0 and leaf["ebx"] & ebx == ebx) or + (ecx > 0 and leaf["ecx"] & ecx == ecx) or + (edx > 0 and leaf["edx"] & edx == edx)) def addFeature(cpuid, feature):