+ if (magic != MULTIBOOT_LOADER_MAGIC)
+ panic("Bootloader was not multiboot compliant; cannot continue.");
+
+ for (i = 0; i < mbinfo->mod_cnt; i++)
+ {
+ outputf("Module found:");
+ outputf(" Start: %08x", (unsigned long) mods[i].mod_start);
+ outputf(" Size: %08x", (unsigned long)mods[i].mod_end - (unsigned long)mods[i].mod_start);
+ outputf(" Name: %s", mods[i].mod_string);
+ }
+
+ if (mbinfo->mod_cnt != 1)
+ panic("Expected exactly one module; cannot continue.");
+ outputf("Current SMRAMC state is: %02x", pci_read8(0, 0, 0, 0x70));
+ outputf("Current USB state is: %04x %04x", pci_read16(0, 31, 2, 0xC0), pci_read16(0, 31, 4, 0xC0));
+ outputf("Current SMI state is: %08x", inl(0x830));
+
+ smi_disable();
+
+ /* Try really hard to shut up USB_LEGKEY. */
+ pci_write16(0, 31, 2, 0xC0, pci_read16(0, 31, 2, 0xC0));
+ pci_write16(0, 31, 2, 0xC0, 0);
+ pci_write16(0, 31, 4, 0xC0, pci_read16(0, 31, 4, 0xC0));
+ pci_write16(0, 31, 4, 0xC0, 0);
+
+ pci_bus_enum();
+
+ /* Open the SMRAM aperture and load our ELF. */
+ old_smramc = smram_save_state();
+
+ if (smram_aseg_set_state(SMRAM_ASEG_OPEN) != 0)
+ panic("Opening SMRAM failed; cannot load ELF.");