// 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)
}
// Run option roms
+ dprintf(3, "[wurm] optionrom_setup\n");
optionrom_setup();
// Run BCVs and show optional boot menu
+ dprintf(3, "[wurm] boot_prep\n");
boot_prep();
// Finalize data structures before boot
+ dprintf(3, "[wurm] cdemu_setup\n");
cdemu_setup();
+ dprintf(3, "[wurm] pmm_finalize\n");
pmm_finalize();
+ dprintf(3, "[wurm] malloc_finalize\n");
malloc_finalize();
+ dprintf(3, "[wurm] memmap_finalize\n");
memmap_finalize();
// Setup bios checksum.
BiosChecksum -= checksum((u8*)BUILD_BIOS_ADDR, BUILD_BIOS_SIZE);
// Write protect bios memory.
+ dprintf(3, "[wurm] make_bios_readonly\n");
make_bios_readonly();
// Invoke int 19 to start boot process.
+ dprintf(3, "[wurm] startBoot\n");
startBoot();
}
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();
}