[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 06/20] target-i386: move out CPU features initializa
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [PATCH 06/20] target-i386: move out CPU features initialization in separate func |
Date: |
Thu, 27 Dec 2012 15:59:22 +0100 |
No functional change, a simple code movement to simplify following refactoring.
Signed-off-by: Igor Mammedov <address@hidden>
Reviewed-by: Eduardo Habkost <address@hidden>
---
v2:
- rebased on top of "i386: cpu: remove duplicate feature names"
http://www.mail-archive.com/address@hidden/msg129458.html
v3:
- rebased on top of 1.3 & split cpu_x86_find_by_name()
- AMD's ext2_features filtering is moved into separate patch
---
target-i386/cpu.c | 53 ++++++++++++++++++++++++++++++-----------------------
1 files changed, 30 insertions(+), 23 deletions(-)
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index e534254..3b9bbfe 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1235,6 +1235,34 @@ static void x86_cpuid_set_tsc_freq(Object *obj, Visitor
*v, void *opaque,
cpu->env.tsc_khz = value / 1000;
}
+static void cpudef_2_x86_cpu(X86CPU *cpu, x86_def_t *def, Error **errp)
+{
+ CPUX86State *env = &cpu->env;
+
+ assert(def->vendor1);
+ env->cpuid_vendor1 = def->vendor1;
+ env->cpuid_vendor2 = def->vendor2;
+ env->cpuid_vendor3 = def->vendor3;
+ env->cpuid_vendor_override = def->vendor_override;
+ object_property_set_int(OBJECT(cpu), def->level, "level", errp);
+ object_property_set_int(OBJECT(cpu), def->family, "family", errp);
+ object_property_set_int(OBJECT(cpu), def->model, "model", errp);
+ object_property_set_int(OBJECT(cpu), def->stepping, "stepping", errp);
+ env->cpuid_features = def->features;
+ env->cpuid_ext_features = def->ext_features;
+ env->cpuid_ext2_features = def->ext2_features;
+ env->cpuid_ext3_features = def->ext3_features;
+ object_property_set_int(OBJECT(cpu), def->xlevel, "xlevel", errp);
+ env->cpuid_kvm_features = def->kvm_features;
+ env->cpuid_svm_features = def->svm_features;
+ env->cpuid_ext4_features = def->ext4_features;
+ env->cpuid_7_0_ebx_features = def->cpuid_7_0_ebx_features;
+ env->cpuid_xlevel2 = def->xlevel2;
+ object_property_set_int(OBJECT(cpu), (int64_t)def->tsc_khz * 1000,
+ "tsc-frequency", errp);
+ object_property_set_str(OBJECT(cpu), def->model_id, "model-id", errp);
+}
+
static int cpu_x86_find_by_name(x86_def_t *x86_cpu_def, const char *name)
{
x86_def_t *def;
@@ -1513,7 +1541,6 @@ static void filter_features_for_kvm(X86CPU *cpu)
int cpu_x86_register(X86CPU *cpu, const char *cpu_model)
{
- CPUX86State *env = &cpu->env;
x86_def_t def1, *def = &def1;
Error *error = NULL;
char *name, *features;
@@ -1541,29 +1568,9 @@ int cpu_x86_register(X86CPU *cpu, const char *cpu_model)
if (cpu_x86_parse_featurestr(def, features) < 0) {
goto error;
}
- assert(def->vendor1);
- env->cpuid_vendor1 = def->vendor1;
- env->cpuid_vendor2 = def->vendor2;
- env->cpuid_vendor3 = def->vendor3;
- env->cpuid_vendor_override = def->vendor_override;
- object_property_set_int(OBJECT(cpu), def->level, "level", &error);
- object_property_set_int(OBJECT(cpu), def->family, "family", &error);
- object_property_set_int(OBJECT(cpu), def->model, "model", &error);
- object_property_set_int(OBJECT(cpu), def->stepping, "stepping", &error);
- env->cpuid_features = def->features;
- env->cpuid_ext_features = def->ext_features;
- env->cpuid_ext2_features = def->ext2_features;
- env->cpuid_ext3_features = def->ext3_features;
- object_property_set_int(OBJECT(cpu), def->xlevel, "xlevel", &error);
- env->cpuid_kvm_features = def->kvm_features;
- env->cpuid_svm_features = def->svm_features;
- env->cpuid_ext4_features = def->ext4_features;
- env->cpuid_7_0_ebx_features = def->cpuid_7_0_ebx_features;
- env->cpuid_xlevel2 = def->xlevel2;
- object_property_set_int(OBJECT(cpu), (int64_t)def->tsc_khz * 1000,
- "tsc-frequency", &error);
- object_property_set_str(OBJECT(cpu), def->model_id, "model-id", &error);
+ cpudef_2_x86_cpu(cpu, def, &error);
+
if (error) {
fprintf(stderr, "%s\n", error_get_pretty(error));
error_free(error);
--
1.7.1
- [Qemu-devel] [PATCH 05/20] target-i386: move setting defaults out of cpu_x86_parse_featurestr(), (continued)
- [Qemu-devel] [PATCH 05/20] target-i386: move setting defaults out of cpu_x86_parse_featurestr(), Igor Mammedov, 2012/12/27
- [Qemu-devel] [PATCH 07/20] target-i386: cpu_x86_register() consolidate freeing resources, Igor Mammedov, 2012/12/27
- [Qemu-devel] [PATCH 09/20] target-i386: add x86cpu_vendor_words2str(), Igor Mammedov, 2012/12/27
- [Qemu-devel] [PATCH 10/20] target-i386: replace uint32_t vendor fields by vendor string in x86_def_t, Igor Mammedov, 2012/12/27
- [Qemu-devel] [PATCH 11/20] target-i386: remove vendor_override field from CPUX86State, Igor Mammedov, 2012/12/27
- [Qemu-devel] [PATCH 06/20] target-i386: move out CPU features initialization in separate func,
Igor Mammedov <=
- [Qemu-devel] [PATCH 08/20] target-i386: move kvm_check_features_against_host() check to realize time, Igor Mammedov, 2012/12/27
- [Qemu-devel] [PATCH 12/20] target-i386: prepare cpu_x86_parse_featurestr() to return a set of key, value property pairs, Igor Mammedov, 2012/12/27
- [Qemu-devel] [PATCH 16/20] target-i386: set custom 'level' without intermediate x86_def_t, Igor Mammedov, 2012/12/27
- [Qemu-devel] [PATCH 15/20] target-i386: set custom 'xlevel' without intermediate x86_def_t, Igor Mammedov, 2012/12/27
- [Qemu-devel] [PATCH 17/20] target-i386: set custom 'model-id' without intermediate x86_def_t, Igor Mammedov, 2012/12/27