Index: kernel/arch/sparc64/src/drivers/niagara.c
===================================================================
--- kernel/arch/sparc64/src/drivers/niagara.c	(revision 0f4f1b286ec18fe5bc220bbc629fc26b6813d889)
+++ kernel/arch/sparc64/src/drivers/niagara.c	(revision 4f63e1b2fbf01496efdba9855e516e2f82cec2c9)
@@ -57,9 +57,9 @@
 static niagara_instance_t *instance = NULL;
 
-static void niagara_putuchar(outdev_t *, const char32_t);
+static void niagara_write(outdev_t *, const char *, size_t);
 
 /** Character device operations */
 static outdev_operations_t niagara_ops = {
-	.write = niagara_putuchar,
+	.write = niagara_write,
 	.redraw = NULL,
 	.scroll_up = NULL,
@@ -95,5 +95,5 @@
 
 /** Write a single character to the standard output. */
-static inline void do_putchar(char c)
+static inline void do_putchar(uint8_t c)
 {
 	/* Repeat until the buffer is non-full */
@@ -102,15 +102,18 @@
 }
 
-/** Write a single character to the standard output. */
-static void niagara_putuchar(outdev_t *dev, char32_t ch)
-{
-	if ((!outbuf_parea.mapped) || (console_override)) {
-		if (ascii_check(ch)) {
-			do_putchar(ch);
-			if (ch == '\n')
-				do_putchar('\r');
-		} else {
-			do_putchar('?');
-		}
+static void niagara_write(outdev_t *dev, const char *s, size_t n)
+{
+	/* If the userspace owns the console, do not output anything. */
+	if (outbuf_parea.mapped && !console_override)
+		return;
+
+	const char *top = s + n;
+	assert(top >= s);
+
+	for (; s < top; s++) {
+		if (*s == '\n')
+			do_putchar('\r');
+
+		do_putchar((uint8_t) *s);
 	}
 }
