Preparation for next patch.
Signed-off-by: Tim Wiederhake <twiederh(a)redhat.com>
---
tests/cputestdata/cpu-data.py | 44 +++++++++++++++++++----------------
1 file changed, 24 insertions(+), 20 deletions(-)
diff --git a/tests/cputestdata/cpu-data.py b/tests/cputestdata/cpu-data.py
index df71132c25..ac4d0ff8e7 100755
--- a/tests/cputestdata/cpu-data.py
+++ b/tests/cputestdata/cpu-data.py
@@ -35,14 +35,7 @@ def gather_name(args):
"Use '--model' to set a model name.")
-def gather_cpuid_leaves(args):
- def mask(regs, eax_in, ecx_in, eax_mask, ebx_mask, ecx_mask, edx_mask):
- if regs["eax_in"] == eax_in and regs["ecx_in"] == ecx_in:
- regs["eax"] &= eax_mask
- regs["ebx"] &= ebx_mask
- regs["ecx"] &= ecx_mask
- regs["edx"] &= edx_mask
-
+def gather_cpuid_leaves_cpuid(output):
leave_pattern = re.compile(
"^\\s*"
"(0x[0-9a-f]+)\\s*"
@@ -52,22 +45,11 @@ def gather_cpuid_leaves(args):
"ecx=(0x[0-9a-f]+)\\s*"
"edx=(0x[0-9a-f]+)\\s*$")
- cpuid = args.path_to_cpuid or "cpuid"
- try:
- output = subprocess.check_output(
- [cpuid, "-1r"],
- universal_newlines=True)
- except FileNotFoundError as e:
- exit("Error: '{}' not found.\n'cpuid' can be usually found
in a "
- "package named identically. If your distro does not provide such
"
- "package, you can find the sources or binary packages at "
-
"'http://www.etallen.com/cpuid.html'.".format(e.filename))
-
for line in output.split("\n"):
match = leave_pattern.match(line)
if not match:
continue
- regs = {
+ yield {
"eax_in": int(match.group(1), 0),
"ecx_in": int(match.group(2), 0),
"eax": int(match.group(3), 0),
@@ -75,6 +57,28 @@ def gather_cpuid_leaves(args):
"ecx": int(match.group(5), 0),
"edx": int(match.group(6), 0)}
+
+def gather_cpuid_leaves(args):
+ def mask(regs, eax_in, ecx_in, eax_mask, ebx_mask, ecx_mask, edx_mask):
+ if regs["eax_in"] == eax_in and regs["ecx_in"] == ecx_in:
+ regs["eax"] &= eax_mask
+ regs["ebx"] &= ebx_mask
+ regs["ecx"] &= ecx_mask
+ regs["edx"] &= edx_mask
+
+ cpuid = args.path_to_cpuid or "cpuid"
+ try:
+ output = subprocess.check_output(
+ [cpuid, "-1r"],
+ universal_newlines=True)
+ except FileNotFoundError as e:
+ exit("Error: '{}' not found.\n'cpuid' can be usually found
in a "
+ "package named identically. If your distro does not provide such
"
+ "package, you can find the sources or binary packages at "
+
"'http://www.etallen.com/cpuid.html'.".format(e.filename))
+
+ reglist = gather_cpuid_leaves_cpuid(output)
+ for regs in reglist:
# local apic id. Pretend to always run on logical processor #0.
mask(regs, 0x01, 0x00, 0xffffffff, 0x00ffffff, 0xffffffff, 0xffffffff)
mask(regs, 0x0b, 0x00, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff00)
--
2.26.3