Index: kernel/generic/src/mm/as.c
===================================================================
--- kernel/generic/src/mm/as.c	(revision 57da95c482edb0cea2f17139f72f308e960ddd0f)
+++ kernel/generic/src/mm/as.c	(revision 3abe07f5c756a02236a5204f4769d9d19bd36b98)
@@ -107,4 +107,24 @@
 static void sh_info_remove_reference(share_info_t *sh_info);
 
+static int as_constructor(void *obj, int flags)
+{
+	as_t *as = (as_t *) obj;
+	int rc;
+
+	link_initialize(&as->inactive_as_with_asid_link);
+	mutex_initialize(&as->lock);	
+	
+	rc = as_constructor_arch(as, flags);
+	
+	return rc;
+}
+
+static int as_destructor(void *obj)
+{
+	as_t *as = (as_t *) obj;
+
+	return as_destructor_arch(as);
+}
+
 /** Initialize address space subsystem. */
 void as_init(void)
@@ -112,5 +132,6 @@
 	as_arch_init();
 	
-	as_slab = slab_cache_create("as_slab", sizeof(as_t), 0, NULL, NULL, SLAB_CACHE_MAGDEFERRED);
+	as_slab = slab_cache_create("as_slab", sizeof(as_t), 0,
+		as_constructor, as_destructor, SLAB_CACHE_MAGDEFERRED);
 	
 	AS_KERNEL = as_create(FLAG_AS_KERNEL);
@@ -129,6 +150,6 @@
 
 	as = (as_t *) slab_alloc(as_slab, 0);
-	link_initialize(&as->inactive_as_with_asid_link);
-	mutex_initialize(&as->lock);
+	(void) as_create_arch(as, 0);
+	
 	btree_create(&as->as_area_btree);
 	
