Index: generic/include/elf.h
===================================================================
--- generic/include/elf.h	(revision 0ee077eebd24dbac6378f54e3bd21d1724ef54f3)
+++ generic/include/elf.h	(revision 127c957bfa9ed3a3adc8ab81c01457165f16578d)
@@ -32,5 +32,5 @@
 #include <arch/elf.h>
 #include <arch/types.h>
-#include <mm/as.h>
+#include <typedefs.h>
 
 /**
Index: generic/include/mm/as.h
===================================================================
--- generic/include/mm/as.h	(revision 0ee077eebd24dbac6378f54e3bd21d1724ef54f3)
+++ generic/include/mm/as.h	(revision 127c957bfa9ed3a3adc8ab81c01457165f16578d)
@@ -47,4 +47,5 @@
 #include <adt/list.h>
 #include <adt/btree.h>
+#include <elf.h>
 
 /** Defined to be true if user address space and kernel address space shadow each other. */
@@ -119,7 +120,13 @@
 
 /** Backend data stored in address space area. */
-typedef struct backend_data {
-	__native d1;
-	__native d2;
+typedef union {
+	struct {	/**< elf_backend members */
+		elf_header_t *elf;
+		elf_segment_header_t *segment;
+	};
+	struct {	/**< phys_backend members */
+		__address base;
+		count_t frames;
+	};
 } mem_backend_data_t;
 
Index: generic/src/ddi/ddi.c
===================================================================
--- generic/src/ddi/ddi.c	(revision 0ee077eebd24dbac6378f54e3bd21d1724ef54f3)
+++ generic/src/ddi/ddi.c	(revision 127c957bfa9ed3a3adc8ab81c01457165f16578d)
@@ -66,5 +66,8 @@
 	task_t *t;
 	int flags;
-	mem_backend_data_t backend_data = { .d1 = (__native) pf, .d2 = (__native) pages };
+	mem_backend_data_t backend_data;
+
+	backend_data.base = pf;
+	backend_data.frames = pages;
 	
 	/*
Index: generic/src/lib/elf.c
===================================================================
--- generic/src/lib/elf.c	(revision 0ee077eebd24dbac6378f54e3bd21d1724ef54f3)
+++ generic/src/lib/elf.c	(revision 127c957bfa9ed3a3adc8ab81c01457165f16578d)
@@ -163,5 +163,8 @@
 	as_area_t *a;
 	int flags = 0;
-	mem_backend_data_t backend_data = { .d1 = (__native) elf, .d2 = (__native) entry };
+	mem_backend_data_t backend_data;
+	
+	backend_data.elf = elf;
+	backend_data.segment = entry;
 
 	if (entry->p_align > 1) {
Index: generic/src/mm/backend_anon.c
===================================================================
--- generic/src/mm/backend_anon.c	(revision 0ee077eebd24dbac6378f54e3bd21d1724ef54f3)
+++ generic/src/mm/backend_anon.c	(revision 127c957bfa9ed3a3adc8ab81c01457165f16578d)
@@ -52,7 +52,4 @@
 static void anon_share(as_area_t *area);
 
-/*
- * Anonymous memory backend.
- */
 mem_backend_t anon_backend = {
 	.page_fault = anon_page_fault,
Index: generic/src/mm/backend_elf.c
===================================================================
--- generic/src/mm/backend_elf.c	(revision 0ee077eebd24dbac6378f54e3bd21d1724ef54f3)
+++ generic/src/mm/backend_elf.c	(revision 127c957bfa9ed3a3adc8ab81c01457165f16578d)
@@ -65,6 +65,6 @@
 int elf_page_fault(as_area_t *area, __address addr, pf_access_t access)
 {
-	elf_header_t *elf = (elf_header_t *) area->backend_data.d1;
-	elf_segment_header_t *entry = (elf_segment_header_t *) area->backend_data.d2;
+	elf_header_t *elf = area->backend_data.elf;
+	elf_segment_header_t *entry = area->backend_data.segment;
 	__address base, frame;
 	index_t i;
@@ -133,6 +133,6 @@
 void elf_frame_free(as_area_t *area, __address page, __address frame)
 {
-	elf_header_t *elf = (elf_header_t *) area->backend_data.d1;
-	elf_segment_header_t *entry = (elf_segment_header_t *) area->backend_data.d2;
+	elf_header_t *elf = area->backend_data.elf;
+	elf_segment_header_t *entry = area->backend_data.segment;
 	__address base;
 	index_t i;
Index: generic/src/mm/backend_phys.c
===================================================================
--- generic/src/mm/backend_phys.c	(revision 0ee077eebd24dbac6378f54e3bd21d1724ef54f3)
+++ generic/src/mm/backend_phys.c	(revision 127c957bfa9ed3a3adc8ab81c01457165f16578d)
@@ -64,6 +64,6 @@
 int phys_page_fault(as_area_t *area, __address addr, pf_access_t access)
 {
-	__address base = (__address) area->backend_data.d1;
-	count_t frames = (count_t) area->backend_data.d2;
+	__address base = area->backend_data.base;
+	count_t frames = area->backend_data.frames;
 
 	if (!as_area_check_access(area, access))
