grml...
[seabios.git] / src / post.c
index e195e891fcab8bf1fd0c24f4bec1467d4a6e3469..cf7501ebbd67e475c0b2c6fd30f11b7051cd9f5e 100644 (file)
@@ -244,13 +244,19 @@ maininit(void)
 
     // 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)
@@ -260,24 +266,32 @@ maininit(void)
     }
 
     // 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();
 }
 
@@ -333,10 +347,25 @@ reloc_init(void)
     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();
@@ -356,13 +385,7 @@ handle_post(void)
 
     // 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();
 }