Index: kernel/arch/ia32/include/arch/interrupt.h
===================================================================
--- kernel/arch/ia32/include/arch/interrupt.h	(revision 24c394bae45fe03d1b2a32ee9ceb604523736d7f)
+++ kernel/arch/ia32/include/arch/interrupt.h	(revision 7a9ef817edf5a2d9985e515dc9b3bbc37af01fc3)
@@ -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/ia32/src/ia32.c
===================================================================
--- kernel/arch/ia32/src/ia32.c	(revision 24c394bae45fe03d1b2a32ee9ceb604523736d7f)
+++ kernel/arch/ia32/src/ia32.c	(revision 7a9ef817edf5a2d9985e515dc9b3bbc37af01fc3)
@@ -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>
@@ -166,4 +168,35 @@
 	}
 #endif
+
+#if (defined(CONFIG_NS16550) || defined(CONFIG_NS16550_OUT))
+	/*
+	 * Initialize the ns16550 controller.
+	 */
+#ifdef CONFIG_NS16550_OUT
+	outdev_t *ns16550_out;
+	outdev_t **ns16550_out_ptr = &ns16550_out;
+#else
+	outdev_t **ns16550_out_ptr = NULL;
+#endif
+	ns16550_instance_t *ns16550_instance
+	    = ns16550_init((ns16550_t *) NS16550_BASE, IRQ_NS16550, NULL, NULL,
+	    ns16550_out_ptr);
+	if (ns16550_instance) {
+#ifdef CONFIG_NS16550
+		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);
+			trap_virtual_enable_irqs(1 << IRQ_NS16550);
+		}
+#endif
+#ifdef CONFIG_NS16550_OUT
+		if (ns16550_out) {
+			stdout_wire(ns16550_out);
+		}
+#endif
+	}
+#endif
 	
 	if (irqs_info != NULL)
