Index: generic/include/mm/as.h
===================================================================
--- generic/include/mm/as.h	(revision fc1e4f6fda536ab9535536af72ca0eb08473cd3f)
+++ generic/include/mm/as.h	(revision 071a8ae65d845056114dc46ddf5f627eb2d83640)
@@ -81,11 +81,22 @@
 	SPINLOCK_DECLARE(lock);
 	link_t as_area_head;
-	pte_t *ptl0;
-	asid_t asid;			/**< Address space identifier. */
+
+	/** Page table pointer. Constant on architectures that use global page hash table. */
+	pte_t *page_table;
+
+	/** Address space identifier. Constant on architectures that do not support ASIDs.*/
+	asid_t asid;
 };
 
+struct as_operations {
+	pte_t *(* page_table_create)(int flags);
+};
+typedef struct as_operations as_operations_t;
+
 extern as_t *AS_KERNEL;
+extern as_operations_t *as_operations;
 
-extern as_t *as_create(pte_t *ptl0, int flags);
+extern void as_init(void);
+extern as_t *as_create(int flags);
 extern as_area_t *as_area_create(as_t *as, as_area_type_t type, size_t size, __address base);
 extern void as_set_mapping(as_t *as, __address page, __address frame);
Index: generic/include/mm/buddy.h
===================================================================
--- generic/include/mm/buddy.h	(revision fc1e4f6fda536ab9535536af72ca0eb08473cd3f)
+++ generic/include/mm/buddy.h	(revision 071a8ae65d845056114dc46ddf5f627eb2d83640)
@@ -58,4 +58,3 @@
 extern void buddy_system_structure_print(buddy_system_t *b, size_t elem_size);
 
-
 #endif
Index: generic/include/mm/page.h
===================================================================
--- generic/include/mm/page.h	(revision fc1e4f6fda536ab9535536af72ca0eb08473cd3f)
+++ generic/include/mm/page.h	(revision 071a8ae65d845056114dc46ddf5f627eb2d83640)
@@ -62,6 +62,6 @@
 /** Operations to manipulate page mappings. */
 struct page_operations {
-	void (* mapping_insert)(as_t *as, __address page, __address frame, int flags, __address root);
-	pte_t *(* mapping_find)(as_t *as, __address page, __address root);
+	void (* mapping_insert)(as_t *as, __address page, __address frame, int flags);
+	pte_t *(* mapping_find)(as_t *as, __address page);
 };
 typedef struct page_operations page_operations_t;
@@ -70,6 +70,7 @@
 
 extern void page_init(void);
-extern void page_mapping_insert(as_t *as, __address page, __address frame, int flags, __address root);
-extern pte_t *page_mapping_find(as_t *as, __address page, __address root);
+extern void page_mapping_insert(as_t *as, __address page, __address frame, int flags);
+extern pte_t *page_mapping_find(as_t *as, __address page);
+extern pte_t *page_table_create(int flags);
 extern void map_structure(__address s, size_t size);
 
