OSDN Git Service

Change bochs bios init order
authorAlexander Graf <agraf@suse.de>
Mon, 29 Jun 2009 13:37:37 +0000 (15:37 +0200)
committerAnthony Liguori <aliguori@us.ibm.com>
Mon, 29 Jun 2009 18:52:12 +0000 (13:52 -0500)
For multiboot support, we need bochs_bios_init to happen before
load_linux, so we get the fw_cfg device.

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
hw/pc.c

diff --git a/hw/pc.c b/hw/pc.c
index 86e5cfe..f54de7e 100644 (file)
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -967,6 +967,12 @@ static void pc_init1(ram_addr_t ram_size,
     if (oprom_area_size < 0x8000)
         oprom_area_size = 0x8000;
 
+    /* map all the bios at the top of memory */
+    cpu_register_physical_memory((uint32_t)(-bios_size),
+                                 bios_size, bios_offset | IO_MEM_ROM);
+
+    bochs_bios_init();
+
     if (linux_boot) {
         load_linux(0xc0000 + oprom_area_size,
                    kernel_filename, initrd_filename, kernel_cmdline, below_4g_mem_size);
@@ -993,12 +999,6 @@ static void pc_init1(ram_addr_t ram_size,
                                            0xe0000);
     }
 
-    /* map all the bios at the top of memory */
-    cpu_register_physical_memory((uint32_t)(-bios_size),
-                                 bios_size, bios_offset | IO_MEM_ROM);
-
-    bochs_bios_init();
-
     cpu_irq = qemu_allocate_irqs(pic_irq_request, NULL, 1);
     i8259 = i8259_init(cpu_irq[0]);
     ferr_irq = i8259[13];