summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2010-05-18 15:55:03 -0500
committerPatrick Williams <iawillia@us.ibm.com>2010-05-18 15:55:03 -0500
commitcf138201c24fdc83ee7835b65cce67e7d7a85e70 (patch)
tree16650f82ac519ff60bc9100b4e90868463bd987d /src/kernel
parent9ea98f274e18a3407ce109a331553e1c910274d9 (diff)
downloadtalos-hostboot-cf138201c24fdc83ee7835b65cce67e7d7a85e70.tar.gz
talos-hostboot-cf138201c24fdc83ee7835b65cce67e7d7a85e70.zip
Create simple console.
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/console.C28
-rw-r--r--src/kernel/kernel.C4
-rw-r--r--src/kernel/makefile4
3 files changed, 34 insertions, 2 deletions
diff --git a/src/kernel/console.C b/src/kernel/console.C
new file mode 100644
index 000000000..a2ad0ffe2
--- /dev/null
+++ b/src/kernel/console.C
@@ -0,0 +1,28 @@
+#include <util/singleton.H>
+#include <kernel/console.H>
+
+static char kernel_printk_buffer[Console::BUFFER_SIZE];
+
+Console::Console() : iv_pos(0), iv_buffer(kernel_printk_buffer)
+{
+ memset(iv_buffer, '\0', Console::BUFFER_SIZE);
+}
+
+int Console::putc(int c)
+{
+ if (BUFFER_SIZE > iv_pos)
+ {
+ iv_buffer[iv_pos] = c;
+ iv_pos++;
+ }
+}
+
+void printk(const char* str)
+{
+ Console& console = Singleton<Console>::instance();
+ while('\0' != *str)
+ {
+ console.putc(*str);
+ str++;
+ }
+}
diff --git a/src/kernel/kernel.C b/src/kernel/kernel.C
index 2ea0d2fbc..fede83f02 100644
--- a/src/kernel/kernel.C
+++ b/src/kernel/kernel.C
@@ -1,5 +1,9 @@
+#include <stdint.h>
+#include <kernel/console.H>
+
int main()
{
+ printk("Welcome to the kernel!\n");
while(1);
return 0;
diff --git a/src/kernel/makefile b/src/kernel/makefile
index 74a6bffbc..1047de456 100644
--- a/src/kernel/makefile
+++ b/src/kernel/makefile
@@ -1,8 +1,8 @@
OBJDIR = ../../obj
include ../../config.mk
-OBJECTS += ${OBJDIR}/start.o
-OBJECTS += ${OBJDIR}/kernel.o
+OBJS = start.o kernel.o console.o
+OBJECTS = $(addprefix ${OBJDIR}/, ${OBJS})
all: ${OBJECTS}
OpenPOWER on IntegriCloud