/* Legacy16InitializeYourself */ static void handle_csm_0000(struct bregs *regs) { qemu_preinit(); dprintf(3, "Legacy16InitializeYourself table %04x:%04x\n", regs->es, regs->bx); csm_init_table = MAKE_FLATPTR(regs->es, regs->bx); dprintf(3, "BiosLessThan1MB %08x\n", csm_init_table->BiosLessThan1MB); dprintf(3, "HiPmmMemory %08x\n", csm_init_table->HiPmmMemory); dprintf(3, "HiPmmMemorySize %08x\n", csm_init_table->HiPmmMemorySizeInBytes); dprintf(3, "ReverseThunk %04x:%04x\n", csm_init_table->ReverseThunkCallSegment, csm_init_table->ReverseThunkCallOffset); dprintf(3, "NumE820Entries %08x\n", csm_init_table->NumberE820Entries); dprintf(3, "OsMemoryAbove1M %08x\n", csm_init_table->OsMemoryAbove1Mb); dprintf(3, "ThunkStart %08x\n", csm_init_table->ThunkStart); dprintf(3, "ThunkSize %08x\n", csm_init_table->ThunkSizeInBytes); dprintf(3, "LoPmmMemory %08x\n", csm_init_table->LowPmmMemory); dprintf(3, "LoPmmMemorySize %08x\n", csm_init_table->LowPmmMemorySizeInBytes); csm_malloc_preinit(csm_init_table->LowPmmMemory, csm_init_table->LowPmmMemorySizeInBytes, csm_init_table->HiPmmMemory, csm_init_table->HiPmmMemorySizeInBytes); reloc_preinit(csm_maininit, regs); }
// Setup for code relocation and then relocate. void VISIBLE32INIT dopost(void) { // Detect ram and setup internal malloc. qemu_preinit(); coreboot_preinit(); malloc_preinit(); // Relocate initialization code and call maininit(). reloc_preinit(maininit, NULL); }