X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fconsole%2Fconsole.c;h=6b4173c8648efd188485553e7f6d0d5cf77f0ec0;hb=64ed2b73451de4b655b3fdda0ff42825a165c317;hp=86ec26d3129997f455f708843e517e2b7a69f215;hpb=7ce8c54e2ba89059d28790550a8f74907b54b916;p=coreboot.git diff --git a/src/console/console.c b/src/console/console.c index 86ec26d31..6b4173c86 100644 --- a/src/console/console.c +++ b/src/console/console.c @@ -2,27 +2,28 @@ * Bootstrap code for the INTEL */ -#include #include +#include +#include + +#ifndef __PRE_RAM__ +#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; + console_loglevel=CONFIG_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) @@ -45,8 +46,6 @@ void console_tx_flush(void) void console_tx_byte(unsigned char byte) { - if (!initialized) - return; if (byte == '\n') __console_tx_byte('\r'); __console_tx_byte(byte); @@ -55,8 +54,6 @@ void console_tx_byte(unsigned char byte) unsigned char console_rx_byte(void) { struct console_driver *driver; - if (!initialized) - return 0; for(driver = console_drivers; driver < econsole_drivers; driver++) { if (driver->tst_byte) break; @@ -70,8 +67,6 @@ unsigned char console_rx_byte(void) int console_tst_byte(void) { struct console_driver *driver; - if (!initialized) - return 0; for(driver = console_drivers; driver < econsole_drivers; driver++) if (driver->tst_byte) return driver->tst_byte(); @@ -83,18 +78,54 @@ int console_tst_byte(void) */ void post_code(uint8_t value) { -#if NO_POST==0 +#if !defined(CONFIG_NO_POST) || CONFIG_NO_POST==0 #if CONFIG_SERIAL_POST==1 - printk_emerg("POST: 0x%02x\n", value); + printk(BIOS_EMERG, "POST: 0x%02x\n", value); #endif outb(value, 0x80); #endif } /* Report a fatal error */ -void die(const char *msg) +void __attribute__((noreturn)) die(const char *msg) +{ + printk(BIOS_EMERG, "%s", msg); + //post_code(0xff); + for (;;) + hlt(); /* Halt */ +} + +#else + +void console_init(void) { - printk_emerg("%s", msg); - post_code(0xff); - while (1); /* Halt */ + static const char console_test[] = + "\n\ncoreboot-" + COREBOOT_VERSION + COREBOOT_EXTRA_VERSION + " " + COREBOOT_BUILD + " starting...\n"; + print_info(console_test); } + +void post_code(u8 value) +{ +#if !defined(CONFIG_NO_POST) || CONFIG_NO_POST==0 +#if CONFIG_SERIAL_POST==1 + print_emerg("POST: 0x"); + print_emerg_hex8(value); + print_emerg("\n"); +#endif + outb(value, 0x80); +#endif +} + +void die(const char *str) +{ + print_emerg(str); + do { + hlt(); + } while(1); +} +#endif