Index: uspace/lib/c/include/ddi.h
===================================================================
--- uspace/lib/c/include/ddi.h	(revision 41df71f99dd4001594df602dcc612186bdf02430)
+++ uspace/lib/c/include/ddi.h	(revision d308687300a22e8f243cc258f82dfe687aa82cfa)
@@ -52,6 +52,5 @@
 typedef volatile uint16_t ioport16_t;
 typedef volatile uint32_t ioport32_t;
-
-extern int device_assign_devno(void);
+typedef volatile uint64_t ioport64_t;
 
 extern int physmem_map(uintptr_t, size_t, unsigned int, void **);
@@ -69,9 +68,9 @@
 extern int pio_disable(void *, size_t);
 
-typedef void (*trace_fnc)(const volatile void *place, uint32_t val,
+typedef void (*trace_fnc)(const volatile void *place, uint64_t val,
     volatile void* base, size_t size, void *data, bool write);
 
 extern int pio_trace_enable(void *, size_t, trace_fnc, void *);
-extern void pio_trace_log(const volatile void *, uint32_t val, bool write);
+extern void pio_trace_log(const volatile void *, uint64_t val, bool write);
 extern void pio_trace_disable(void *);
 
@@ -79,8 +78,10 @@
 extern void pio_write_16(ioport16_t *, uint16_t);
 extern void pio_write_32(ioport32_t *, uint32_t);
+extern void pio_write_64(ioport64_t *, uint64_t);
 
 extern uint8_t pio_read_8(const ioport8_t *);
 extern uint16_t pio_read_16(const ioport16_t *);
 extern uint32_t pio_read_32(const ioport32_t *);
+extern uint64_t pio_read_64(const ioport64_t *);
 
 static inline uint8_t pio_change_8(ioport8_t *reg, uint8_t val, uint8_t mask,
@@ -111,4 +112,13 @@
 }
 
+static inline uint64_t pio_change_64(ioport64_t *reg, uint64_t val,
+    uint64_t mask, useconds_t delay)
+{
+	uint64_t v = pio_read_64(reg);
+	udelay(delay);
+	pio_write_64(reg, (v & ~mask) | val);
+	return v;
+}
+
 static inline uint8_t pio_set_8(ioport8_t *r, uint8_t v, useconds_t d)
 {
@@ -122,4 +132,8 @@
 {
 	return pio_change_32(r, v, 0, d);
+}
+static inline uint64_t pio_set_64(ioport64_t *r, uint64_t v, useconds_t d)
+{
+	return pio_change_64(r, v, 0, d);
 }
 
@@ -136,4 +150,8 @@
 	return pio_change_32(r, 0, v, d);
 }
+static inline uint64_t pio_clear_64(ioport64_t *r, uint64_t v, useconds_t d)
+{
+	return pio_change_64(r, 0, v, d);
+}
 
 #endif
Index: uspace/lib/c/include/inttypes.h
===================================================================
--- uspace/lib/c/include/inttypes.h	(revision 41df71f99dd4001594df602dcc612186bdf02430)
+++ uspace/lib/c/include/inttypes.h	(revision d308687300a22e8f243cc258f82dfe687aa82cfa)
@@ -36,5 +36,5 @@
 #define LIBC_INTTYPES_H_
 
-#include <libarch/inttypes.h>
+#include <_bits/inttypes.h>
 
 #endif
Index: uspace/lib/c/include/io/charfield.h
===================================================================
--- uspace/lib/c/include/io/charfield.h	(revision 41df71f99dd4001594df602dcc612186bdf02430)
+++ uspace/lib/c/include/io/charfield.h	(revision d308687300a22e8f243cc258f82dfe687aa82cfa)
@@ -38,4 +38,5 @@
 
 #include <stdbool.h>
+#include <wchar.h>
 #include <io/color.h>
 #include <io/style.h>
Index: uspace/lib/c/include/limits.h
===================================================================
--- uspace/lib/c/include/limits.h	(revision 41df71f99dd4001594df602dcc612186bdf02430)
+++ uspace/lib/c/include/limits.h	(revision d308687300a22e8f243cc258f82dfe687aa82cfa)
@@ -36,7 +36,5 @@
 #define LIBC_LIMITS_H_
 
-/* XXX Make this more accurate */
-#include <stdint.h>
-#include <libarch/stdint.h>
+#include <_bits/limits.h>
 
 #endif
Index: uspace/lib/c/include/stddef.h
===================================================================
--- uspace/lib/c/include/stddef.h	(revision 41df71f99dd4001594df602dcc612186bdf02430)
+++ uspace/lib/c/include/stddef.h	(revision d308687300a22e8f243cc258f82dfe687aa82cfa)
@@ -36,9 +36,9 @@
 #define LIBC_STDDEF_H_
 
-#include <libarch/stddef.h>
+#include <_bits/size_t.h>
+#include <_bits/ptrdiff_t.h>
+#include <_bits/wchar_t.h>
 
-#ifndef NULL
-	#define NULL  ((void *) 0)
-#endif
+#include <_bits/NULL.h>
 
 #define offsetof(type, member) \
Index: uspace/lib/c/include/stdint.h
===================================================================
--- uspace/lib/c/include/stdint.h	(revision 41df71f99dd4001594df602dcc612186bdf02430)
+++ uspace/lib/c/include/stdint.h	(revision d308687300a22e8f243cc258f82dfe687aa82cfa)
@@ -36,29 +36,5 @@
 #define LIBC_STDINT_H_
 
-#define INT8_MIN  INT8_C(0x80)
-#define INT8_MAX  INT8_C(0x7F)
-
-#define UINT8_MIN  UINT8_C(0)
-#define UINT8_MAX  UINT8_C(0xFF)
-
-#define INT16_MIN  INT16_C(0x8000)
-#define INT16_MAX  INT16_C(0x7FFF)
-
-#define UINT16_MIN  UINT16_C(0)
-#define UINT16_MAX  UINT16_C(0xFFFF)
-
-#define INT32_MIN  INT32_C(0x80000000)
-#define INT32_MAX  INT32_C(0x7FFFFFFF)
-
-#define UINT32_MIN  UINT32_C(0)
-#define UINT32_MAX  UINT32_C(0xFFFFFFFF)
-
-#define INT64_MIN  INT64_C(0x8000000000000000)
-#define INT64_MAX  INT64_C(0x7FFFFFFFFFFFFFFF)
-
-#define UINT64_MIN  UINT64_C(0)
-#define UINT64_MAX  UINT64_C(0xFFFFFFFFFFFFFFFF)
-
-#include <libarch/stdint.h>
+#include <_bits/stdint.h>
 
 #endif
Index: uspace/lib/c/include/types/common.h
===================================================================
--- uspace/lib/c/include/types/common.h	(revision 41df71f99dd4001594df602dcc612186bdf02430)
+++ uspace/lib/c/include/types/common.h	(revision d308687300a22e8f243cc258f82dfe687aa82cfa)
@@ -36,5 +36,13 @@
 #define LIBC_TYPES_COMMON_H_
 
-#include <libarch/types.h>
+#if __SIZEOF_POINTER__ == 4
+#define __32_BITS__
+#elif __SIZEOF_POINTER__ == 8
+#define __64_BITS__
+#else
+#error __SIZEOF_POINTER__ is not defined.
+#endif
+
+#include <_bits/all.h>
 
 #endif
Index: uspace/lib/c/include/wchar.h
===================================================================
--- uspace/lib/c/include/wchar.h	(revision d308687300a22e8f243cc258f82dfe687aa82cfa)
+++ uspace/lib/c/include/wchar.h	(revision d308687300a22e8f243cc258f82dfe687aa82cfa)
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2017 CZ.NIC, z.s.p.o.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* Authors:
+ *	Jiří Zárevúcky (jzr) <zarevucky.jiri@gmail.com>
+ */
+
+/** @addtogroup libc
+ * @{
+ */
+/** @file
+ */
+
+#ifndef LIBC_WCHAR_H_
+#define LIBC_WCHAR_H_
+
+#include <_bits/size_t.h>
+#include <_bits/wchar_t.h>
+#include <_bits/wint_t.h>
+
+#include <_bits/NULL.h>
+#include <_bits/WCHAR_MIN.h>
+#include <_bits/WCHAR_MAX.h>
+#include <_bits/WEOF.h>
+
+#endif
+
+/** @}
+ */
