Index: kernel/arch/arm32/include/mm/page_armv7.h
===================================================================
--- kernel/arch/arm32/include/mm/page_armv7.h	(revision a5f007fd98a651411f95fbe647b5c769721cee13)
+++ kernel/arch/arm32/include/mm/page_armv7.h	(revision 87739fbe10b43d1383f976c45529fbb55deac7d6)
@@ -265,4 +265,5 @@
 		p->should_be_zero_1 = 0;
 		p->domain = 0;
+		p->ns = 0;
 	}
 }
@@ -293,7 +294,8 @@
 	}
 	
+	/* tex=0 buf=1 and cache=1 => normal memory
+	 * tex=0 buf=1 and cache=0 => shareable device mmio
+	 */
 	p->cacheable = (flags & PAGE_CACHEABLE);
-	
-	/* even devices can use bufferable */
 	p->bufferable = 1;
 	p->tex = 0;
@@ -307,14 +309,11 @@
 	/* default access permission: kernel only*/
 	p->access_permission_0 = PTE_AP0_USER_NO_KERNEL_FULL;
-
+	
 	if (flags & PAGE_USER) {
 		p->access_permission_0 = PTE_AP0_USER_FULL_KERNEL_FULL;
+		// TODO Fix kernel to use PAGE_WRITE flag properly and
+		// apply this for kernel pages as well.
 		if (!(flags & PAGE_WRITE))
 			p->access_permission_1 = PTE_AP1_RO;
-		if (!(flags & PAGE_CACHEABLE)) {
-			p->tex = 0x2;
-			p->bufferable = 0;
-			p->cacheable = 0;
-		}
 	}
 }
