Index: boot/arch/arm32/src/putchar.c
===================================================================
--- boot/arch/arm32/src/putchar.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/arch/arm32/src/putchar.c	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -195,5 +195,5 @@
  * @param ch	Character to display
  */
-void putchar(const wchar_t ch)
+void putwchar(const wchar_t ch)
 {
 	if (ch == '\n')
@@ -203,5 +203,5 @@
 		scons_sendb((uint8_t) ch);
 	else
-		scons_sendb(U_SPECIAL);
+		scons_sendb('?');
 }
 
Index: boot/arch/ia64/include/arch/ski.h
===================================================================
--- boot/arch/ia64/include/arch/ski.h	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/arch/ia64/include/arch/ski.h	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -30,8 +30,5 @@
 #define BOOT_ia64_SKI_H_
 
-#include <stddef.h>
-#include <str.h>
-
-extern void ski_putchar(const wchar_t);
+extern void ski_putchar(char);
 
 #endif
Index: boot/arch/ia64/src/putchar.c
===================================================================
--- boot/arch/ia64/src/putchar.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/arch/ia64/src/putchar.c	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -33,5 +33,5 @@
 #include <arch/ski.h>
 
-void putchar(const wchar_t ch)
+void putwchar(const wchar_t ch)
 {
 #ifdef MACHINE_ski
@@ -39,5 +39,5 @@
 		ski_putchar(ch);
 	else
-		ski_putchar(U_SPECIAL);
+		ski_putchar('?');
 #endif
 }
Index: boot/arch/ia64/src/ski.c
===================================================================
--- boot/arch/ia64/src/ski.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/arch/ia64/src/ski.c	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -52,5 +52,5 @@
 }
 
-void ski_putchar(const wchar_t ch)
+void ski_putchar(char ch)
 {
 	ski_console_init();
Index: boot/arch/mips32/src/putchar.c
===================================================================
--- boot/arch/mips32/src/putchar.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/arch/mips32/src/putchar.c	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -39,5 +39,5 @@
 #if defined(MACHINE_msim)
 #define _putchar(ch)	msim_putchar((ch))
-static void msim_putchar(const wchar_t ch)
+static void msim_putchar(char ch)
 {
 	*((char *) MSIM_VIDEORAM_ADDRESS) = ch;
@@ -51,18 +51,16 @@
     (yamon_print_count_ptr_t) YAMON_SUBR_PRINT_COUNT;
 
-static void yamon_putchar(const wchar_t wch)
+static void yamon_putchar(char ch)
 {
-	const char ch = (char) wch;
-
 	(*yamon_print_count)(0, &ch, 1);
 }
 #endif
 
-void putchar(const wchar_t ch)
+void putwchar(const wchar_t ch)
 {
 	if (ascii_check(ch))
 		_putchar(ch);
 	else
-		_putchar(U_SPECIAL);
+		_putchar('?');
 }
 
Index: boot/arch/ppc32/src/ofw.c
===================================================================
--- boot/arch/ppc32/src/ofw.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/arch/ppc32/src/ofw.c	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -39,5 +39,5 @@
 }
 
-void putchar(const wchar_t ch)
+void putwchar(wchar_t ch)
 {
 	if (ch == '\n')
@@ -47,4 +47,4 @@
 		ofw_putchar(ch);
 	else
-		ofw_putchar(U_SPECIAL);
+		ofw_putchar('?');
 }
Index: boot/arch/riscv64/src/putchar.c
===================================================================
--- boot/arch/riscv64/src/putchar.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/arch/riscv64/src/putchar.c	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -33,9 +33,9 @@
 #include <arch/ucb.h>
 
-void putchar(const wchar_t ch)
+void putwchar(wchar_t ch)
 {
 	if (ascii_check(ch))
 		htif_cmd(HTIF_DEVICE_CONSOLE, HTIF_CONSOLE_PUTC, ch);
 	else
-		htif_cmd(HTIF_DEVICE_CONSOLE, HTIF_CONSOLE_PUTC, U_SPECIAL);
+		htif_cmd(HTIF_DEVICE_CONSOLE, HTIF_CONSOLE_PUTC, '?');
 }
Index: boot/arch/sparc64/src/ofw.c
===================================================================
--- boot/arch/sparc64/src/ofw.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/arch/sparc64/src/ofw.c	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -43,5 +43,5 @@
 #include <str.h>
 
-void putchar(const wchar_t ch)
+void putwchar(wchar_t ch)
 {
 	if (ch == '\n')
@@ -51,5 +51,5 @@
 		ofw_putchar(ch);
 	else
-		ofw_putchar(U_SPECIAL);
+		ofw_putchar('?');
 }
 
Index: boot/genarch/include/genarch/ofw.h
===================================================================
--- boot/genarch/include/genarch/ofw.h	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/genarch/include/genarch/ofw.h	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -89,5 +89,5 @@
 extern void ofw_init(void);
 
-extern void ofw_putchar(const char);
+extern void ofw_putchar(char);
 
 extern ofw_arg_t ofw_get_property(const phandle, const char *, void *,
Index: boot/genarch/src/ofw.c
===================================================================
--- boot/genarch/src/ofw.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/genarch/src/ofw.c	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -194,5 +194,5 @@
 }
 
-void ofw_putchar(const char ch)
+void ofw_putchar(char ch)
 {
 	if (ofw_stdout == 0)
Index: boot/generic/include/putchar.h
===================================================================
--- boot/generic/include/putchar.h	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/generic/include/putchar.h	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -38,5 +38,5 @@
 #include <stddef.h>
 
-extern void putchar(const wchar_t);
+extern void putwchar(wchar_t);
 
 #endif
Index: boot/generic/src/vprintf.c
===================================================================
--- boot/generic/src/vprintf.c	(revision 904b1bc3e43b98f81bec9e9296b154371c383776)
+++ boot/generic/src/vprintf.c	(revision 49a796f1d5e0783f179376793f1b84d4f6cf0bde)
@@ -42,5 +42,5 @@
 
 	while (offset < size) {
-		putchar(str_decode(str, &offset, size));
+		putwchar(str_decode(str, &offset, size));
 		chars++;
 	}
@@ -56,9 +56,9 @@
 
 	while ((uc = str_decode(str, &offset, STR_NO_LIMIT)) != 0) {
-		putchar(uc);
+		putwchar(uc);
 		chars++;
 	}
 
-	putchar('\n');
+	putwchar('\n');
 	return chars;
 }
