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

Submitted by Eduardo Habkost on Aug. 3, 2012, 2:59 a.m.

Details

Message ID 1343962766-22024-11-git-send-email-ehabkost@redhat.com
State New
Headers show

Commit Message

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 hide | download patch | download mbox

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)