/* * Bootstrap code for the INTEL */ #include #include #include #include static int initialized; /* initialize the console */ void console_init(void) { struct console_driver *driver; if(get_option(&console_loglevel, "debug_level")) console_loglevel=DEFAULT_CONSOLE_LOGLEVEL; for(driver = console_drivers; driver < econsole_drivers; driver++) { if (!driver->init) continue; driver->init(); } initialized = 1; } static void __console_tx_byte(unsigned char byte) { struct console_driver *driver; for(driver = console_drivers; driver < econsole_drivers; driver++) { driver->tx_byte(byte); } } void console_tx_flush(void) { struct console_driver *driver; for(driver = console_drivers; driver < econsole_drivers; driver++) { if (!driver->tx_flush) continue; driver->tx_flush(); } } void console_tx_byte(unsigned char byte) { if (!initialized) return; if (byte == '\n') __console_tx_byte('\r'); __console_tx_byte(byte); } /* * Write POST information */ void post_code(uint8_t value) { #ifdef CONFIG_SERIAL_POST printk_info("POST: 0x%02x\n", value); #elsif !define(NO_POST) outb(value, 0x80); #endif } /* Report a fatal error */ void die(char *msg) { printk_emerg("%s", msg); post_code(0xff); while (1); /* Halt */ }