Drop \r\n and \n\r as both print_XXX and printk now do this internally.
[coreboot.git] / src / console / console.c
index 86ec26d3129997f455f708843e517e2b7a69f215..6b4173c8648efd188485553e7f6d0d5cf77f0ec0 100644 (file)
@@ -2,27 +2,28 @@
  * Bootstrap code for the INTEL 
  */
 
-#include <arch/io.h>
 #include <console/console.h>
+#include <build.h>
+#include <arch/hlt.h>
+
+#ifndef __PRE_RAM__
+#include <arch/io.h>
 #include <string.h>
 #include <pc80/mc146818rtc.h>
 
 
-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