Index: uspace/lib/c/generic/as.c
===================================================================
--- uspace/lib/c/generic/as.c	(revision f126c876616f5bbece442f6a35e0434e74d4c869)
+++ uspace/lib/c/generic/as.c	(revision b1956e379e62b427bc1ee130d2d755579cd92ebd)
@@ -45,11 +45,11 @@
 /** Create address space area.
  *
- * @param base  Starting virtual address of the area.
- *              If set to AS_AREA_ANY ((void *) -1),
- *              the kernel finds a mappable area.
- * @param size  Size of the area.
- * @param flags Flags describing type of the area.
- * @param pager If non-negative, phone to the external pager backing the area.
- *              If AS_AREA_UNPAGED (-1), the area is anonymous.
+ * @param base       Starting virtual address of the area.
+ *                   If set to AS_AREA_ANY ((void *) -1), the kernel finds a
+ *                   mappable area.
+ * @param size       Size of the area.
+ * @param flags      Flags describing type of the area.
+ * @param pager_info Pager info structure or AS_AREA_UNPAGED (NULL) if the area
+ *                   is not paged (i.e. anonymous).
  *
  * @return Starting virtual address of the created area on success.
@@ -57,9 +57,10 @@
  *
  */
-void *as_area_create(void *base, size_t size, unsigned int flags, int pager)
+void *as_area_create(void *base, size_t size, unsigned int flags,
+    as_area_pager_info_t *pager_info)
 {
 	return (void *) __SYSCALL5(SYS_AS_AREA_CREATE, (sysarg_t) base,
 	    (sysarg_t) size, (sysarg_t) flags, (sysarg_t) __entry,
-	    (sysarg_t) pager);
+	    (sysarg_t) pager_info);
 }
 
Index: uspace/lib/c/generic/async.c
===================================================================
--- uspace/lib/c/generic/async.c	(revision f126c876616f5bbece442f6a35e0434e74d4c869)
+++ uspace/lib/c/generic/async.c	(revision b1956e379e62b427bc1ee130d2d755579cd92ebd)
@@ -117,4 +117,5 @@
 #include <macros.h>
 #include <as.h>
+#include <abi/mm/as.h>
 #include "private/libc.h"
 
@@ -3383,7 +3384,13 @@
 
 void *async_as_area_create(void *base, size_t size, unsigned int flags,
-    async_sess_t *pager)
-{
-	return as_area_create(base, size, flags, pager->phone);
+    async_sess_t *pager, sysarg_t id1, sysarg_t id2, sysarg_t id3)
+{
+	as_area_pager_info_t pager_info = {
+		.pager = pager->phone,
+		.id1 = id1,
+		.id2 = id2,
+		.id3 = id3
+	};
+	return as_area_create(base, size, flags, &pager_info);
 }
 
Index: uspace/lib/c/include/as.h
===================================================================
--- uspace/lib/c/include/as.h	(revision f126c876616f5bbece442f6a35e0434e74d4c869)
+++ uspace/lib/c/include/as.h	(revision b1956e379e62b427bc1ee130d2d755579cd92ebd)
@@ -53,5 +53,6 @@
 }
 
-extern void *as_area_create(void *, size_t, unsigned int, int);
+extern void *as_area_create(void *, size_t, unsigned int,
+    as_area_pager_info_t *);
 extern int as_area_resize(void *, size_t, unsigned int);
 extern int as_area_change_flags(void *, unsigned int);
Index: uspace/lib/c/include/async.h
===================================================================
--- uspace/lib/c/include/async.h	(revision f126c876616f5bbece442f6a35e0434e74d4c869)
+++ uspace/lib/c/include/async.h	(revision b1956e379e62b427bc1ee130d2d755579cd92ebd)
@@ -488,5 +488,6 @@
 extern void async_remote_state_release_exchange(async_exch_t *);
 
-extern void *async_as_area_create(void *, size_t, unsigned int, async_sess_t *);
+extern void *async_as_area_create(void *, size_t, unsigned int, async_sess_t *,
+    sysarg_t, sysarg_t, sysarg_t);
 
 #endif
