pci_setup();
smm_init();
+ // Setup Xen hypercalls
+ xen_init_hypercalls();
+
// Initialize internal tables
boot_setup();
// Setup interfaces that option roms may need
bios32_setup();
+ dprintf(3, "[wurm] pmm_setup\n");
pmm_setup();
+ dprintf(3, "[wurm] pnp_setup\n");
pnp_setup();
+ dprintf(3, "[wurm] kbd_setup\n");
kbd_setup();
+ dprintf(3, "[wurm] mouse_setup\n");
mouse_setup();
+ dprintf(3, "[wurm] init_bios_tables\n");
init_bios_tables();
// Run vga option rom
+ dprintf(3, "[wurm] vga_setup\n");
vga_setup();
// Do hardware initialization (if running synchronously)
func();
}
-// Start of Power On Self Test (POST) - the BIOS initilization phase.
-// This function does the setup needed for code relocation, and then
-// invokes the relocation and main setup code.
+// Setup for code relocation and then call reloc_init
void VISIBLE32INIT
+dopost(void)
+{
+ HaveRunPost = 1;
+
+ // Detect ram and setup internal malloc.
+ qemu_cfg_port_probe();
+ ram_probe();
+ malloc_setup();
+
+ // Relocate initialization code and call maininit().
+ reloc_init();
+}
+
+// Entry point for Power On Self Test (POST) - the BIOS initilization
+// phase. This function makes the memory at 0xc0000-0xfffff
+// read/writable and then calls dopost().
+void VISIBLE32FLAT
handle_post(void)
{
debug_serial_setup();
// Allow writes to modify bios area (0xf0000)
make_bios_writable();
- HaveRunPost = 1;
- // Detect ram and setup internal malloc.
- qemu_cfg_port_probe();
- ram_probe();
- malloc_setup();
-
- // Relocate initialization code and call maininit().
- reloc_init();
+ // Now that memory is read/writable - start post process.
+ dopost();
}