Index: kernel/arch/sparc64/src/asm.S
===================================================================
--- kernel/arch/sparc64/src/asm.S	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/sparc64/src/asm.S	(revision ed88c8e9e48e792fdd0df46568e33e36eb624db3)
@@ -189,6 +189,6 @@
 	mov %g0, %o0  /* return 0 on failure */
 
-FUNCTION_BEGIN(early_putchar)
+FUNCTION_BEGIN(early_putwchar)
 	retl
 	nop
-FUNCTION_END(early_putchar)
+FUNCTION_END(early_putwchar)
Index: kernel/arch/sparc64/src/drivers/niagara.c
===================================================================
--- kernel/arch/sparc64/src/drivers/niagara.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ kernel/arch/sparc64/src/drivers/niagara.c	(revision ed88c8e9e48e792fdd0df46568e33e36eb624db3)
@@ -58,9 +58,9 @@
 static niagara_instance_t *instance = NULL;
 
-static void niagara_putchar(outdev_t *, const wchar_t);
+static void niagara_putwchar(outdev_t *, const wchar_t);
 
 /** Character device operations */
 static outdev_operations_t niagara_ops = {
-	.write = niagara_putchar,
+	.write = niagara_putwchar,
 	.redraw = NULL,
 	.scroll_up = NULL,
@@ -96,5 +96,5 @@
 
 /** Write a single character to the standard output. */
-static inline void do_putchar(const char c)
+static inline void do_putchar(char c)
 {
 	/* Repeat until the buffer is non-full */
@@ -104,10 +104,14 @@
 
 /** Write a single character to the standard output. */
-static void niagara_putchar(outdev_t *dev, const wchar_t ch)
+static void niagara_putwchar(outdev_t *dev, wchar_t ch)
 {
 	if ((!outbuf_parea.mapped) || (console_override)) {
-		do_putchar(ch);
-		if (ch == '\n')
-			do_putchar('\r');
+		if (ascii_check(ch)) {
+			do_putchar(ch);
+			if (ch == '\n')
+				do_putchar('\r');
+		} else {
+			do_putchar('?');
+		}
 	}
 }
