From 8ca8d7665d671e10d72b8fcb4d69121d75f7906e Mon Sep 17 00:00:00 2001 From: Eric Biederman Date: Tue, 22 Apr 2003 19:02:15 +0000 Subject: - Initial checkin of the freebios2 tree git-svn-id: svn://svn.coreboot.org/coreboot/trunk@784 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- src/console/console.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/console/console.c (limited to 'src/console/console.c') diff --git a/src/console/console.c b/src/console/console.c new file mode 100644 index 0000000000..458fbb8fff --- /dev/null +++ b/src/console/console.c @@ -0,0 +1,75 @@ +/* + * Bootstrap code for the INTEL + * $Id$ + * + */ + +#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 */ +} -- cgit v1.2.3