Index: kernel/genarch/src/drivers/ns16550/ns16550.c
===================================================================
--- kernel/genarch/src/drivers/ns16550/ns16550.c	(revision 98a935ebd156845f2511fad291365f6649289e1f)
+++ kernel/genarch/src/drivers/ns16550/ns16550.c	(revision 29e7cc73a70a1289b0778f4cc6afedcc242d7baa)
@@ -112,21 +112,24 @@
 }
 
-static void ns16550_putuchar(outdev_t *dev, char32_t ch)
+static void ns16550_write(outdev_t *dev, const char *s, size_t n)
 {
 	ns16550_instance_t *instance = (ns16550_instance_t *) dev->data;
 
-	if ((!instance->parea.mapped) || (console_override)) {
-		if (ch == '\n')
+	if (instance->parea.mapped && !console_override)
+		return;
+
+	const char *top = s + n;
+	assert(top >= s);
+
+	for (; s < top; s++) {
+		if (*s == '\n')
 			ns16550_sendb(instance, '\r');
 
-		if (ascii_check(ch))
-			ns16550_sendb(instance, (uint8_t) ch);
-		else
-			ns16550_sendb(instance, U_SPECIAL);
+		ns16550_sendb(instance, (uint8_t) *s);
 	}
 }
 
 static outdev_operations_t ns16550_ops = {
-	.write = ns16550_putuchar,
+	.write = ns16550_write,
 	.redraw = NULL
 };
