diff options
author | Greg Watson <jarrah@users.sourceforge.net> | 2003-11-09 23:03:46 +0000 |
---|---|---|
committer | Greg Watson <jarrah@users.sourceforge.net> | 2003-11-09 23:03:46 +0000 |
commit | c8ee08a9bb7f3498ea1547991f314e990eb5463f (patch) | |
tree | 9e09910dd920da245b002111212d7ade0a922d77 | |
parent | 1c5a7f198c345c7b78387c033a5fcb1557ee05d3 (diff) |
printk for init
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1267 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rw-r--r-- | src/arch/ppc/lib/printk_init.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/arch/ppc/lib/printk_init.c b/src/arch/ppc/lib/printk_init.c new file mode 100644 index 0000000000..f1bc5c981f --- /dev/null +++ b/src/arch/ppc/lib/printk_init.c @@ -0,0 +1,41 @@ +/* + * blantantly copied from linux/kernel/printk.c + * + * Copyright (C) 1991, 1992 Linus Torvalds + * + */ +#include <stdarg.h> +#include <console/loglevel.h> + +/* printk's without a loglevel use this.. */ +#define DEFAULT_MESSAGE_LOGLEVEL 4 /* BIOS_WARNING */ + +/* Keep together for sysctl support */ + +int console_loglevel = DEFAULT_CONSOLE_LOGLEVEL; + +extern int vtxprintf(void (*)(unsigned char), const char *, va_list); +extern void uart8250_tx_byte(unsigned, unsigned char); + +void console_tx_byte(unsigned char byte) +{ + if (byte == '\n') + uart8250_tx_byte(UART0_IO_BASE, '\r'); + uart8250_tx_byte(UART0_IO_BASE, byte); +} + +int do_printk(int msg_level, const char *fmt, ...) +{ + va_list args; + int i; + + if (msg_level >= console_loglevel) { + return 0; + } + + va_start(args, fmt); + i = vtxprintf(console_tx_byte, fmt, args); + va_end(args); + + return i; +} |