#define INFO_SIGNATURE 0x5754454E
extern char _binary_realmode_bin_start[];
extern int _binary_realmode_bin_size;
#define INFO_SIGNATURE 0x5754454E
extern char _binary_realmode_bin_start[];
extern int _binary_realmode_bin_size;
}
void c_start(unsigned int magic, struct mb_info *mbinfo)
{
struct mod_info *mods = mbinfo->mods;
}
void c_start(unsigned int magic, struct mb_info *mbinfo)
{
struct mod_info *mods = mbinfo->mods;
if (magic != MULTIBOOT_LOADER_MAGIC)
panic("Bootloader was not multiboot compliant; cannot continue.");
for (i = 0; i < mbinfo->mod_cnt; i++)
{
if (magic != MULTIBOOT_LOADER_MAGIC)
panic("Bootloader was not multiboot compliant; cannot continue.");
for (i = 0; i < mbinfo->mod_cnt; i++)
{
- puts("Module found:\n");
- puts(" Start: "); puthex(mods[i].mod_start); puts("\n");
- puts(" Size: "); puthex(mods[i].mod_end - mods[i].mod_start); puts("\n");
- puts(" Name: "); puts(mods[i].mod_string); puts("\n");
+ 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);
-
- puts("Current USB state is: "); puthex(pci_read16(0, 31, 2, 0xC0)); puts(" "); puthex(pci_read16(0, 31, 4, 0xC0)); puts("\n");
- puts("Current SMI state is: "); puthex(inl(0x830)); puts("\n");
- puts("Current SMRAMC state is: "); puthex(pci_read8(0, 0, 0, 0x70)); puts("\n");
+ 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));
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_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);
if (info->signature != INFO_SIGNATURE)
{
smram_restore_state(old_smramc); /* Restore so that video ram is touchable again. */
if (info->signature != INFO_SIGNATURE)
{
smram_restore_state(old_smramc); /* Restore so that video ram is touchable again. */
- puts("Now returning to real mode.\n");
- memcpy(0x4000, _binary_realmode_bin_start, (int)&_binary_realmode_bin_size);
+ outputf("Now returning to real mode.");
+ memcpy((void *)0x4000, _binary_realmode_bin_start, (int)&_binary_realmode_bin_size);