Index: uspace/lib/c/generic/as.c
===================================================================
--- uspace/lib/c/generic/as.c	(revision b4b534ac1d1515633baff0d563e9c16938bfe19f)
+++ uspace/lib/c/generic/as.c	(revision 6aeca0d025e83224a241ae34369bc498a25cfa1d)
@@ -50,4 +50,6 @@
  * @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.
  *
  * @return Starting virtual address of the created area on success.
@@ -55,8 +57,9 @@
  *
  */
-void *as_area_create(void *base, size_t size, unsigned int flags)
+void *as_area_create(void *base, size_t size, unsigned int flags, int pager)
 {
-	return (void *) __SYSCALL4(SYS_AS_AREA_CREATE, (sysarg_t) base,
-	    (sysarg_t) size, (sysarg_t) flags, (sysarg_t) __entry);
+	return (void *) __SYSCALL5(SYS_AS_AREA_CREATE, (sysarg_t) base,
+	    (sysarg_t) size, (sysarg_t) flags, (sysarg_t) __entry,
+	    (sysarg_t) pager);
 }
 
Index: uspace/lib/c/generic/elf/elf_mod.c
===================================================================
--- uspace/lib/c/generic/elf/elf_mod.c	(revision b4b534ac1d1515633baff0d563e9c16938bfe19f)
+++ uspace/lib/c/generic/elf/elf_mod.c	(revision 6aeca0d025e83224a241ae34369bc498a25cfa1d)
@@ -370,5 +370,6 @@
 	 */
 	a = as_area_create((uint8_t *) base + bias, mem_sz,
-	    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE);
+	    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE,
+	    AS_AREA_UNPAGED);
 	if (a == AS_MAP_FAILED) {
 		DPRINTF("memory mapping failed (%p, %zu)\n",
Index: uspace/lib/c/generic/fibril.c
===================================================================
--- uspace/lib/c/generic/fibril.c	(revision b4b534ac1d1515633baff0d563e9c16938bfe19f)
+++ uspace/lib/c/generic/fibril.c	(revision 6aeca0d025e83224a241ae34369bc498a25cfa1d)
@@ -279,7 +279,7 @@
 	size_t stack_size = (stksz == FIBRIL_DFLT_STK_SIZE) ?
 	    stack_size_get() : stksz;
-	fibril->stack = as_area_create((void *) -1, stack_size,
+	fibril->stack = as_area_create(AS_AREA_ANY, stack_size,
 	    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD |
-	    AS_AREA_LATE_RESERVE);
+	    AS_AREA_LATE_RESERVE, AS_AREA_UNPAGED);
 	if (fibril->stack == (void *) -1) {
 		fibril_teardown(fibril, false);
Index: uspace/lib/c/generic/io/chargrid.c
===================================================================
--- uspace/lib/c/generic/io/chargrid.c	(revision b4b534ac1d1515633baff0d563e9c16938bfe19f)
+++ uspace/lib/c/generic/io/chargrid.c	(revision 6aeca0d025e83224a241ae34369bc498a25cfa1d)
@@ -60,5 +60,6 @@
 	if ((flags & CHARGRID_FLAG_SHARED) == CHARGRID_FLAG_SHARED) {
 		scrbuf = (chargrid_t *) as_area_create(AS_AREA_ANY, size,
-		    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE);
+		    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE,
+		    AS_AREA_UNPAGED);
 		if (scrbuf == AS_MAP_FAILED)
 			return NULL;
Index: uspace/lib/c/generic/malloc.c
===================================================================
--- uspace/lib/c/generic/malloc.c	(revision b4b534ac1d1515633baff0d563e9c16938bfe19f)
+++ uspace/lib/c/generic/malloc.c	(revision 6aeca0d025e83224a241ae34369bc498a25cfa1d)
@@ -354,5 +354,5 @@
 	size_t asize = ALIGN_UP(size, PAGE_SIZE);
 	void *astart = as_area_create(AS_AREA_ANY, asize,
-	    AS_AREA_WRITE | AS_AREA_READ | AS_AREA_CACHEABLE);
+	    AS_AREA_WRITE | AS_AREA_READ | AS_AREA_CACHEABLE, AS_AREA_UNPAGED);
 	if (astart == AS_MAP_FAILED)
 		return false;
Index: uspace/lib/c/generic/thread.c
===================================================================
--- uspace/lib/c/generic/thread.c	(revision b4b534ac1d1515633baff0d563e9c16938bfe19f)
+++ uspace/lib/c/generic/thread.c	(revision 6aeca0d025e83224a241ae34369bc498a25cfa1d)
@@ -116,5 +116,5 @@
 	void *stack = as_area_create(AS_AREA_ANY, stack_size,
 	    AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE | AS_AREA_GUARD |
-	    AS_AREA_LATE_RESERVE);
+	    AS_AREA_LATE_RESERVE, AS_AREA_UNPAGED);
 	if (stack == AS_MAP_FAILED) {
 		free(uarg);
