summaryrefslogtreecommitdiff
path: root/kernel/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/main.c')
-rw-r--r--kernel/main.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/kernel/main.c b/kernel/main.c
new file mode 100644
index 0000000..513894b
--- /dev/null
+++ b/kernel/main.c
@@ -0,0 +1,26 @@
+
+void kernel_serial_out(char* str);
+
+void main() {
+
+ kernel_serial_out("main()\n");
+
+ // TODO: GDT.
+
+ asm volatile(
+ "cli\n"
+ "hlt\n"
+ );
+ while(1);
+}
+
+#define outb(port, value) asm volatile("out %b0,%w1" : : "a" (value), "d" (port));
+
+void kernel_serial_out(char* str) {
+ while(*str) {
+ if(*str == '\n') {
+ outb(0x3f8, '\r');
+ }
+ outb(0x3f8, *str++);
+ }
+}