Index: include/mm/page.h
===================================================================
--- include/mm/page.h	(revision 992bbb973fb33c1a5240dfc3591c3fa04a139966)
+++ include/mm/page.h	(revision ff9f858e06ba17699b8a6270f956c6f6bb1efe94)
@@ -31,19 +31,28 @@
 
 #include <arch/types.h>
-#include <arch/mm/page.h>
 #include <typedefs.h>
 
-#define PAGE_NOT_CACHEABLE      (0<<0)
-#define PAGE_CACHEABLE          (1<<0)
+#define PAGE_CACHEABLE_SHIFT		0
+#define PAGE_NOT_CACHEABLE_SHIFT	PAGE_CACHEABLE_SHIFT
+#define PAGE_PRESENT_SHIFT		1
+#define PAGE_NOT_PRESENT_SHIFT		PAGE_PRESENT_SHIFT
+#define PAGE_USER_SHIFT			2
+#define PAGE_KERNEL_SHIFT		PAGE_USER_SHIFT
+#define PAGE_READ_SHIFT			3
+#define PAGE_WRITE_SHIFT		4
+#define PAGE_EXEC_SHIFT			5
 
-#define PAGE_PRESENT            (0<<1)
-#define PAGE_NOT_PRESENT        (1<<1)
+#define PAGE_NOT_CACHEABLE      (0<<PAGE_CACHEABLE_SHIFT)
+#define PAGE_CACHEABLE          (1<<PAGE_CACHEABLE_SHIFT)
 
-#define PAGE_USER               (1<<2)
-#define PAGE_KERNEL             (0<<2)
+#define PAGE_PRESENT            (0<<PAGE_PRESENT_SHIFT)
+#define PAGE_NOT_PRESENT        (1<<PAGE_PRESENT_SHIFT)
 
-#define PAGE_READ		(1<<3)
-#define PAGE_WRITE		(1<<4)
-#define PAGE_EXEC		(1<<5)
+#define PAGE_USER               (1<<PAGE_USER_SHIFT)
+#define PAGE_KERNEL             (0<<PAGE_USER_SHIFT)
+
+#define PAGE_READ		(1<<PAGE_READ_SHIFT)
+#define PAGE_WRITE		(1<<PAGE_WRITE_SHIFT)
+#define PAGE_EXEC		(1<<PAGE_EXEC_SHIFT)
 
 /*
@@ -61,8 +70,12 @@
 #define PTL3_INDEX(vaddr)		PTL3_INDEX_ARCH(vaddr)
 
+#define GET_PTL0_ADDRESS()		GET_PTL0_ADDRESS_ARCH()
+#define SET_PTL0_ADDRESS(ptl0)		SET_PTL0_ADDRESS_ARCH(ptl0)
+
 /*
  * These macros traverse the 4-level tree of page tables,
  * each descending by one level.
  */
+#define GET_PTL0_ADDRESS()		GET_PTL0_ADDRESS_ARCH()
 #define GET_PTL1_ADDRESS(ptl0, i)	GET_PTL1_ADDRESS_ARCH(ptl0, i)
 #define GET_PTL2_ADDRESS(ptl1, i)	GET_PTL2_ADDRESS_ARCH(ptl1, i)
@@ -74,8 +87,17 @@
  * tree of page tables on respective level.
  */
+#define SET_PTL0_ADDRESS(ptl0)		SET_PTL0_ADDRESS_ARCH(ptl0)
 #define SET_PTL1_ADDRESS(ptl0, i, a)	SET_PTL1_ADDRESS_ARCH(ptl0, i, a)
 #define SET_PTL2_ADDRESS(ptl1, i, a)	SET_PTL2_ADDRESS_ARCH(ptl1, i, a)
 #define SET_PTL3_ADDRESS(ptl2, i, a)	SET_PTL3_ADDRESS_ARCH(ptl2, i, a)
 #define SET_FRAME_ADDRESS(ptl3, i, a)	SET_FRAME_ADDRESS_ARCH(ptl3, i, a)
+
+/*
+ * These macros are provided to query various flags within the page tables.
+ */
+#define GET_PTL1_FLAGS(ptl0, i)		GET_PTL1_FLAGS_ARCH(ptl0, i)
+#define GET_PTL2_FLAGS(ptl1, i)		GET_PTL2_FLAGS_ARCH(ptl1, i)
+#define GET_PTL3_FLAGS(ptl2, i)		GET_PTL3_FLAGS_ARCH(ptl2, i)
+#define GET_FRAME_FLAGS(ptl3, i)	GET_FRAME_FLAGS_ARCH(ptl3, i)
 
 /*
@@ -87,4 +109,5 @@
 #define SET_FRAME_FLAGS(ptl3, i, x)	SET_FRAME_FLAGS_ARCH(ptl3, i, x)
 
+#include <arch/mm/page.h>
 
 extern void page_init(void);
