Index: abi/include/_bits/native.h
===================================================================
--- abi/include/_bits/native.h	(revision bebd154be4d1118b08a23ce3b56a8613c8841cff)
+++ abi/include/_bits/native.h	(revision 5a5269df4bb8693ab8e38af0622b7fa6365b9535)
@@ -56,4 +56,38 @@
 typedef intptr_t  native_t;
 
+#ifdef KERNEL
+
+typedef sysarg_t uspace_addr_t;
+/* We might implement a way to check validity of the type some day. */
+#define uspace_ptr(type) uspace_addr_t
+#define USPACE_NULL 0
+
+#else /* !KERNEL */
+
+typedef void *uspace_addr_t;
+#define uspace_ptr(type) type *
+
+#endif
+
+// TODO: Put this in a better location.
+#define uspace_ptr_as_area_info_t uspace_ptr(as_area_info_t)
+#define uspace_ptr_as_area_pager_info_t uspace_ptr(as_area_pager_info_t)
+#define uspace_ptr_cap_irq_handle_t uspace_ptr(cap_irq_handle_t)
+#define uspace_ptr_cap_phone_handle_t uspace_ptr(cap_phone_handle_t)
+#define uspace_ptr_cap_waitq_handle_t uspace_ptr(cap_waitq_handle_t)
+#define uspace_ptr_char uspace_ptr(char)
+#define uspace_ptr_const_char uspace_ptr(const char)
+#define uspace_ptr_ddi_ioarg_t uspace_ptr(ddi_ioarg_t)
+#define uspace_ptr_ipc_data_t uspace_ptr(ipc_data_t)
+#define uspace_ptr_irq_code_t uspace_ptr(irq_code_t)
+#define uspace_ptr_size_t uspace_ptr(size_t)
+#define uspace_ptr_struct_uspace_arg uspace_ptr(struct uspace_arg)
+#define uspace_ptr_sysarg64_t uspace_ptr(sysarg64_t)
+#define uspace_ptr_task_id_t uspace_ptr(task_id_t)
+#define uspace_ptr_thread_id_t uspace_ptr(thread_id_t)
+#define uspace_ptr_uintptr_t uspace_ptr(uintptr_t)
+#define uspace_ptr_uspace_arg_t uspace_ptr(uspace_arg_t)
+#define uspace_ptr_uspace_thread_function_t uspace_ptr(uspace_thread_function_t)
+
 __HELENOS_DECLS_END;
 
Index: abi/include/abi/proc/uarg.h
===================================================================
--- abi/include/abi/proc/uarg.h	(revision bebd154be4d1118b08a23ce3b56a8613c8841cff)
+++ abi/include/abi/proc/uarg.h	(revision 5a5269df4bb8693ab8e38af0622b7fa6365b9535)
@@ -37,15 +37,18 @@
 
 #include <stddef.h>
+#include <_bits/native.h>
+
+typedef void (uspace_thread_function_t)(void *);
 
 /** Structure passed to uinit kernel thread as argument. */
 typedef struct uspace_arg {
-	void *uspace_entry;
-	void *uspace_stack;
+	uspace_addr_t uspace_entry;
+	uspace_addr_t uspace_stack;
 	size_t uspace_stack_size;
 
-	void (*uspace_thread_function)(void *);
-	void *uspace_thread_arg;
+	uspace_ptr_uspace_thread_function_t uspace_thread_function;
+	uspace_addr_t uspace_thread_arg;
 
-	struct uspace_arg *uspace_uarg;
+	uspace_ptr_struct_uspace_arg uspace_uarg;
 } uspace_arg_t;
 
