Index: uspace/lib/c/generic/async.c
===================================================================
--- uspace/lib/c/generic/async.c	(revision 69146b93ef5ca7beba675e46730ac8d6d5a24316)
+++ uspace/lib/c/generic/async.c	(revision 927a181ebf836ca4e18efcf32e0b11a9a8c69dc7)
@@ -166,5 +166,5 @@
 
 /** Async framework global futex */
-atomic_t async_futex = FUTEX_INITIALIZER;
+futex_t async_futex = FUTEX_INITIALIZER;
 
 /** Number of threads waiting for IPC in the kernel. */
Index: uspace/lib/c/generic/fibril.c
===================================================================
--- uspace/lib/c/generic/fibril.c	(revision 69146b93ef5ca7beba675e46730ac8d6d5a24316)
+++ uspace/lib/c/generic/fibril.c	(revision 927a181ebf836ca4e18efcf32e0b11a9a8c69dc7)
@@ -49,4 +49,5 @@
 #include <assert.h>
 #include <async.h>
+#include <futex.h>
 
 /**
@@ -54,5 +55,5 @@
  * serialized_list and manager_list.
  */
-static atomic_t fibril_futex = FUTEX_INITIALIZER;
+static futex_t fibril_futex = FUTEX_INITIALIZER;
 
 static LIST_INITIALIZE(ready_list);
Index: uspace/lib/c/generic/futex.c
===================================================================
--- uspace/lib/c/generic/futex.c	(revision 69146b93ef5ca7beba675e46730ac8d6d5a24316)
+++ uspace/lib/c/generic/futex.c	(revision 927a181ebf836ca4e18efcf32e0b11a9a8c69dc7)
@@ -46,5 +46,5 @@
 void futex_initialize(futex_t *futex, int val)
 {
-	atomic_set(futex, val);
+	atomic_set(&futex->val, val);
 }
 
@@ -59,5 +59,5 @@
 int futex_trydown(futex_t *futex)
 {
-	return cas(futex, 1, 0);
+	return cas(&futex->val, 1, 0);
 }
 
@@ -73,6 +73,6 @@
 int futex_down(futex_t *futex)
 {
-	if ((atomic_signed_t) atomic_predec(futex) < 0)
-		return __SYSCALL1(SYS_FUTEX_SLEEP, (sysarg_t) &futex->count);
+	if ((atomic_signed_t) atomic_predec(&futex->val) < 0)
+		return __SYSCALL1(SYS_FUTEX_SLEEP, (sysarg_t) &futex->val.count);
 	
 	return 0;
@@ -89,6 +89,6 @@
 int futex_up(futex_t *futex)
 {
-	if ((atomic_signed_t) atomic_postinc(futex) < 0)
-		return __SYSCALL1(SYS_FUTEX_WAKEUP, (sysarg_t) &futex->count);
+	if ((atomic_signed_t) atomic_postinc(&futex->val) < 0)
+		return __SYSCALL1(SYS_FUTEX_WAKEUP, (sysarg_t) &futex->val.count);
 	
 	return 0;
Index: uspace/lib/c/generic/ipc.c
===================================================================
--- uspace/lib/c/generic/ipc.c	(revision 69146b93ef5ca7beba675e46730ac8d6d5a24316)
+++ uspace/lib/c/generic/ipc.c	(revision 927a181ebf836ca4e18efcf32e0b11a9a8c69dc7)
@@ -81,5 +81,5 @@
 LIST_INITIALIZE(queued_calls);
 
-static atomic_t ipc_futex = FUTEX_INITIALIZER;
+static futex_t ipc_futex = FUTEX_INITIALIZER;
 
 /** Send asynchronous message via syscall.
Index: uspace/lib/c/include/futex.h
===================================================================
--- uspace/lib/c/include/futex.h	(revision 69146b93ef5ca7beba675e46730ac8d6d5a24316)
+++ uspace/lib/c/include/futex.h	(revision 927a181ebf836ca4e18efcf32e0b11a9a8c69dc7)
@@ -39,7 +39,9 @@
 #include <sys/types.h>
 
-#define FUTEX_INITIALIZER  {1}
+#define FUTEX_INITIALIZER  {{1}}
 
-typedef atomic_t futex_t;
+typedef struct futex {
+	atomic_t val;
+} futex_t;
 
 extern void futex_initialize(futex_t *futex, int value);
Index: uspace/lib/c/include/ipc/common.h
===================================================================
--- uspace/lib/c/include/ipc/common.h	(revision 69146b93ef5ca7beba675e46730ac8d6d5a24316)
+++ uspace/lib/c/include/ipc/common.h	(revision 927a181ebf836ca4e18efcf32e0b11a9a8c69dc7)
@@ -40,4 +40,5 @@
 #include <atomic.h>
 #include <task.h>
+#include <futex.h>
 
 #define IPC_FLAG_BLOCKING  0x01
@@ -51,5 +52,5 @@
 typedef sysarg_t ipc_callid_t;
 
-extern atomic_t async_futex;
+extern futex_t async_futex;
 
 #endif
