Index: kernel/arch/amd64/include/interrupt.h
===================================================================
--- kernel/arch/amd64/include/interrupt.h	(revision d30b14f669b359c7b674055c2d28a6c236edf7b3)
+++ kernel/arch/amd64/include/interrupt.h	(revision 3296df5ebf486ef213eaea03ce982d78f1997fa9)
@@ -53,4 +53,6 @@
 #define IRQ_KBD       1
 #define IRQ_PIC1      2
+/* NS16550 at COM1 */
+#define IRQ_NS16550   4
 #define IRQ_PIC_SPUR  7
 #define IRQ_MOUSE     12
Index: kernel/arch/amd64/src/amd64.c
===================================================================
--- kernel/arch/amd64/src/amd64.c	(revision d30b14f669b359c7b674055c2d28a6c236edf7b3)
+++ kernel/arch/amd64/src/amd64.c	(revision 3296df5ebf486ef213eaea03ce982d78f1997fa9)
@@ -50,7 +50,9 @@
 #include <genarch/drivers/ega/ega.h>
 #include <genarch/drivers/i8042/i8042.h>
+#include <genarch/drivers/ns16550/ns16550.h>
 #include <genarch/drivers/legacy/ia32/io.h>
 #include <genarch/fb/bfb.h>
 #include <genarch/kbrd/kbrd.h>
+#include <genarch/srln/srln.h>
 #include <genarch/multiboot/multiboot.h>
 #include <genarch/multiboot/multiboot2.h>
@@ -215,4 +217,21 @@
 	}
 #endif
+
+#ifdef CONFIG_NS16550
+	/*
+	 * Initialize the ns16550 controller. Then initialize the serial
+	 * input module and connect it to ns16550.
+	 */
+	ns16550_instance_t *ns16550_instance
+	    = ns16550_init((ns16550_t *) NS16550_BASE, IRQ_NS16550, NULL, NULL);
+	if (ns16550_instance) {
+		srln_instance_t *srln_instance = srln_init();
+		if (srln_instance) {
+			indev_t *sink = stdin_wire();
+			indev_t *srln = srln_wire(srln_instance, sink);
+			ns16550_wire(ns16550_instance, srln);
+		}
+	}
+#endif
 	
 	if (irqs_info != NULL)
