Index: boot/generic/src/printf_core.c
===================================================================
--- boot/generic/src/printf_core.c	(revision ffccdff0fd3f49751202889e457bdf900721bfad)
+++ boot/generic/src/printf_core.c	(revision ce52c333dd9013cd4e9c22121ab41c36aee9c7d4)
@@ -504,5 +504,5 @@
 	while (true) {
 		i = nxt;
-		wchar_t uc = str_decode(fmt, &nxt, STR_NO_LIMIT);
+		char32_t uc = str_decode(fmt, &nxt, STR_NO_LIMIT);
 
 		if (uc == 0)
Index: boot/generic/src/str.c
===================================================================
--- boot/generic/src/str.c	(revision ffccdff0fd3f49751202889e457bdf900721bfad)
+++ boot/generic/src/str.c	(revision ce52c333dd9013cd4e9c22121ab41c36aee9c7d4)
@@ -38,5 +38,5 @@
  * strings, called just strings are encoded in UTF-8. Wide strings (encoded
  * in UTF-32) are supported to a limited degree. A single character is
- * represented as wchar_t.@n
+ * represented as char32_t.@n
  *
  * Overview of the terminology:@n
@@ -46,6 +46,6 @@
  *  byte                  8 bits stored in uint8_t (unsigned 8 bit integer)
  *
- *  character             UTF-32 encoded Unicode character, stored in wchar_t
- *                        (signed 32 bit integer), code points 0 .. 1114111
+ *  character             UTF-32 encoded Unicode character, stored in char32_t
+ *                        (unsigned 32 bit integer), code points 0 .. 1114111
  *                        are valid
  *
@@ -57,5 +57,5 @@
  *
  *  wide string           UTF-32 encoded NULL-terminated Unicode string,
- *                        wchar_t *
+ *                        char32_t *
  *
  *  [wide] string size    number of BYTES in a [wide] string (excluding
@@ -96,5 +96,5 @@
  * A specific character inside a [wide] string can be referred to by:@n
  *
- *  pointer (char *, wchar_t *)
+ *  pointer (char *, char32_t *)
  *  byte offset (size_t)
  *  character index (size_t)
@@ -109,11 +109,4 @@
 #include <stdint.h>
 
-/** Check the condition if wchar_t is signed */
-#ifdef __WCHAR_UNSIGNED__
-#define WCHAR_SIGNED_CHECK(cond)  (true)
-#else
-#define WCHAR_SIGNED_CHECK(cond)  (cond)
-#endif
-
 /** Byte mask consisting of lowest @n bits (out of 8) */
 #define LO_MASK_8(n)  ((uint8_t) ((1 << (n)) - 1))
@@ -143,5 +136,5 @@
  *
  */
-wchar_t str_decode(const char *str, size_t *offset, size_t size)
+char32_t str_decode(const char *str, size_t *offset, size_t size)
 {
 	if (*offset + 1 > size)
@@ -180,5 +173,5 @@
 		return U_SPECIAL;
 
-	wchar_t ch = b0 & LO_MASK_8(b0_bits);
+	char32_t ch = b0 & LO_MASK_8(b0_bits);
 
 	/* Decode continuation bytes */
@@ -191,5 +184,5 @@
 
 		/* Shift data bits to ch */
-		ch = (ch << CONT_BITS) | (wchar_t) (b & LO_MASK_8(CONT_BITS));
+		ch = (ch << CONT_BITS) | (char32_t) (b & LO_MASK_8(CONT_BITS));
 		cbytes--;
 	}
@@ -213,5 +206,5 @@
  *         code was invalid.
  */
-errno_t chr_encode(const wchar_t ch, char *str, size_t *offset, size_t size)
+errno_t chr_encode(const char32_t ch, char *str, size_t *offset, size_t size)
 {
 	if (*offset >= size)
@@ -340,7 +333,7 @@
  *
  */
-bool ascii_check(wchar_t ch)
-{
-	if (WCHAR_SIGNED_CHECK(ch >= 0) && (ch <= 127))
+bool ascii_check(char32_t ch)
+{
+	if (ch <= 127)
 		return true;
 
@@ -353,7 +346,7 @@
  *
  */
-bool chr_check(wchar_t ch)
-{
-	if (WCHAR_SIGNED_CHECK(ch >= 0) && (ch <= 1114111))
+bool chr_check(char32_t ch)
+{
+	if (ch <= 1114111)
 		return true;
 
@@ -381,6 +374,6 @@
 int str_cmp(const char *s1, const char *s2)
 {
-	wchar_t c1 = 0;
-	wchar_t c2 = 0;
+	char32_t c1 = 0;
+	char32_t c2 = 0;
 
 	size_t off1 = 0;
@@ -421,5 +414,5 @@
 	size_t dest_off = 0;
 
-	wchar_t ch;
+	char32_t ch;
 	while ((ch = str_decode(src, &src_off, STR_NO_LIMIT)) != 0) {
 		if (chr_encode(ch, dest, &dest_off, size - 1) != EOK)
Index: boot/generic/src/vprintf.c
===================================================================
--- boot/generic/src/vprintf.c	(revision ffccdff0fd3f49751202889e457bdf900721bfad)
+++ boot/generic/src/vprintf.c	(revision ce52c333dd9013cd4e9c22121ab41c36aee9c7d4)
@@ -42,5 +42,5 @@
 
 	while (offset < size) {
-		putwchar(str_decode(str, &offset, size));
+		putuchar(str_decode(str, &offset, size));
 		chars++;
 	}
@@ -53,12 +53,12 @@
 	size_t offset = 0;
 	size_t chars = 0;
-	wchar_t uc;
+	char32_t uc;
 
 	while ((uc = str_decode(str, &offset, STR_NO_LIMIT)) != 0) {
-		putwchar(uc);
+		putuchar(uc);
 		chars++;
 	}
 
-	putwchar('\n');
+	putuchar('\n');
 	return chars;
 }
