提交 e7bf3c06 编写于 作者: J Jiri Denemark

cputest: Add cpuidIsSet helper to cpu-cpuid.py

Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
上级 72c44a15
......@@ -171,6 +171,24 @@ cpuidMap = [
]
def cpuidIsSet(cpuid, feature):
in_eax = feature["in_eax"]
in_ecx = feature["in_ecx"]
eax = feature["eax"]
ebx = feature["ebx"]
ecx = feature["ecx"]
edx = feature["edx"]
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))
def parseFeatureWords(path):
features = None
......@@ -217,30 +235,13 @@ def parseFeatureWords(path):
return props, cpuid
def propAdd(props, feature, value):
for name in feature["names"]:
props[name] = value
def convert(path):
props, cpuid = parseFeatureWords(path)
for feature in cpuidMap:
in_eax = feature["in_eax"]
in_ecx = feature["in_ecx"]
eax = feature["eax"]
ebx = feature["ebx"]
ecx = feature["ecx"]
edx = feature["edx"]
if in_eax not in cpuid or in_ecx not in cpuid[in_eax]:
propAdd(props, feature, False)
else:
leaf = cpuid[in_eax][in_ecx]
propAdd(props, feature, ((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)))
value = cpuidIsSet(cpuid, feature)
for name in feature["names"]:
props[name] = value
with open(path, "w") as f:
json.dump({"return": {"model": {"name": "base", "props": props}},
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册