qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 13/18] pc.c: split out cpu initialization from pc_in


From: Isaku Yamahata
Subject: [Qemu-devel] [PATCH 13/18] pc.c: split out cpu initialization from pc_init1() into pc_cpus_init().
Date: Thu, 18 Jun 2009 19:57:12 +0900

split out cpu initialization which is piix independent from pc_init1()
into pc_cpus_init(). Later it will be used.

Signed-off-by: Isaku Yamahata <address@hidden>
---
 hw/pc.c |   51 +++++++++++++++++++++++++++++----------------------
 1 files changed, 29 insertions(+), 22 deletions(-)

diff --git a/hw/pc.c b/hw/pc.c
index eeb56cc..880b510 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -847,6 +847,34 @@ int cpu_is_bsp(CPUState *env)
        return env->cpuid_apic_id == 0;
 }
 
+static void pc_cpus_init(const char *cpu_model)
+{
+    int i;
+    CPUState *env;
+
+    /* init CPUs */
+    if (cpu_model == NULL) {
+#ifdef TARGET_X86_64
+        cpu_model = "qemu64";
+#else
+        cpu_model = "qemu32";
+#endif
+    }
+
+    for(i = 0; i < smp_cpus; i++) {
+        env = cpu_init(cpu_model);
+        if (!env) {
+            fprintf(stderr, "Unable to find x86 CPU definition\n");
+            exit(1);
+        }
+        if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) {
+            env->cpuid_apic_id = env->cpu_index;
+            apic_init(env);
+        }
+        qemu_register_reset(main_cpu_reset, 0, env);
+    }
+}
+
 static qemu_irq *pc_allocte_cpu_irq(void)
 {
     return qemu_allocate_irqs(pic_irq_request, NULL, 1);
@@ -867,7 +895,6 @@ static void pc_init1(ram_addr_t ram_size,
     PCIBus *pci_bus;
     static PCIDevice *i440fx_state;
     int piix3_devfn = -1;
-    CPUState *env;
     qemu_irq *cpu_irq;
     qemu_irq *i8259;
     int index;
@@ -888,27 +915,7 @@ static void pc_init1(ram_addr_t ram_size,
 
     linux_boot = (kernel_filename != NULL);
 
-    /* init CPUs */
-    if (cpu_model == NULL) {
-#ifdef TARGET_X86_64
-        cpu_model = "qemu64";
-#else
-        cpu_model = "qemu32";
-#endif
-    }
-    
-    for(i = 0; i < smp_cpus; i++) {
-        env = cpu_init(cpu_model);
-        if (!env) {
-            fprintf(stderr, "Unable to find x86 CPU definition\n");
-            exit(1);
-        }
-        if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) {
-            env->cpuid_apic_id = env->cpu_index;
-            apic_init(env);
-        }
-        qemu_register_reset(main_cpu_reset, 0, env);
-    }
+    pc_cpus_init(cpu_model);
 
     vmport_init();
 
-- 
1.6.0.2





reply via email to

[Prev in Thread] Current Thread [Next in Thread]