[Top][All Lists]
[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
- [Qemu-devel] [PATCH 00/18] split out piix specific part from pc emulator., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 07/18] pc.c: Make smm enable/disable function i440fx independent., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 08/18] pc.c: remove unnecessary global variables, pit and ioapic.., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 04/18] acpi.c: make qemu_system_powerdown() piix independent., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 02/18] acpi.c: split out pc smbus routines from acpi.c into pc_smbus.c, Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 01/18] acpi.c: make qemu_system_device_hot_add piix independent., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 05/18] acpi: add acpi constants from linux header files and use them., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 03/18] acpi.c: split out apm register emulation., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 09/18] pc.c: remove a global variable, floppy_controller., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 13/18] pc.c: split out cpu initialization from pc_init1() into pc_cpus_init().,
Isaku Yamahata <=
- [Qemu-devel] [PATCH 11/18] pc.c: introduce a function to allocate cpu irq., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 14/18] pc.c: split out memory allocation from pc_init1() into pc_memory_init(), Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 06/18] acpi.c: split acpi.c into the common part and the piix4 part., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 10/18] pc.c: remove a global variable, RTCState *rtc_state., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 18/18] pc.c: split out piix specific part from pc.c into pc_piix.c, Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 17/18] pc.c: split out pci device init from pc_init1() into pc_pci_device_init(), Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 15/18] pc.c: split out vga initialization from pc_init1() into pc_vga_init()., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 12/18] pc.c: make pc_init1() not refer ferr_irq directly., Isaku Yamahata, 2009/06/18
- [Qemu-devel] [PATCH 16/18] pc.c: split out basic device init from pc_init1() into pc_basic_device_init(), Isaku Yamahata, 2009/06/18