Patchwork [RFC,10/19] move CPU object creation to cpu.c

login
register
mail settings
Submitter Eduardo Habkost
Date Aug. 3, 2012, 2:59 a.m.
Message ID <1343962766-22024-11-git-send-email-ehabkost@redhat.com>
Download mbox | patch
Permalink /patch/174865/
State New
Headers show

Comments

Eduardo Habkost - Aug. 3, 2012, 2:59 a.m.
cpu.c handles the class registration and parsing of the CPU model string, so
moving it there will make it easier to refactor the CPU model string parsing
and CPU object creation.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 target-i386/cpu.c    | 17 +++++++++++++++++
 target-i386/cpu.h    |  1 +
 target-i386/helper.c | 14 +-------------
 3 files changed, 19 insertions(+), 13 deletions(-)

Patch

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index e5be586..c96300e 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1434,6 +1434,23 @@  int cpu_x86_register(X86CPU *cpu, const char *cpu_model)
     return 0;
 }
 
+X86CPU *cpu_x86_create(const char *cpu_model)
+{
+    X86CPU *cpu;
+    CPUX86State *env;
+
+    cpu = X86_CPU(object_new(TYPE_X86_CPU));
+    env = &cpu->env;
+    env->cpu_model_str = cpu_model;
+    if (cpu_x86_register(cpu, cpu_model) < 0) {
+        object_delete(OBJECT(cpu));
+        return NULL;
+    }
+
+    x86_cpu_realize(OBJECT(cpu), NULL);
+    return cpu;
+}
+
 #if !defined(CONFIG_USER_ONLY)
 /* copy vendor id string to 32 bit register, nul pad as needed
  */
diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index c81f7bf..436ff86 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -927,6 +927,7 @@  int cpu_x86_signal_handler(int host_signum, void *pinfo,
 void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
                    uint32_t *eax, uint32_t *ebx,
                    uint32_t *ecx, uint32_t *edx);
+X86CPU *cpu_x86_create(const char *cpu_model);
 int cpu_x86_register(X86CPU *cpu, const char *cpu_model);
 void cpu_clear_apic_feature(CPUX86State *env);
 void host_cpuid(uint32_t function, uint32_t count,
diff --git a/target-i386/helper.c b/target-i386/helper.c
index 5a7eb56..3c10ec1 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -1153,8 +1153,6 @@  int cpu_x86_get_descr_debug(CPUX86State *env, unsigned int selector,
 
 X86CPU *cpu_x86_init(const char *cpu_model)
 {
-    X86CPU *cpu;
-    CPUX86State *env;
     static int inited;
 
     /* init various static tables used in TCG mode */
@@ -1167,17 +1165,7 @@  X86CPU *cpu_x86_init(const char *cpu_model)
 #endif
     }
 
-    cpu = X86_CPU(object_new(TYPE_X86_CPU));
-    env = &cpu->env;
-    env->cpu_model_str = cpu_model;
-    if (cpu_x86_register(cpu, cpu_model) < 0) {
-        object_delete(OBJECT(cpu));
-        return NULL;
-    }
-
-    x86_cpu_realize(OBJECT(cpu), NULL);
-
-    return cpu;
+    return cpu_x86_create(cpu_model);
 }
 
 #if !defined(CONFIG_USER_ONLY)