Index: boot/arch/arm32/src/mm.c
===================================================================
--- boot/arch/arm32/src/mm.c	(revision 8abcf4e7f08fa2a990c4bde86e31ad7865a13354)
+++ boot/arch/arm32/src/mm.c	(revision f9f758e8783cc8b9d957992e78eafdbed6d5584f)
@@ -136,11 +136,18 @@
 {
 	pte->descriptor_type = PTE_DESCRIPTOR_SECTION;
-	pte->bufferable = 1;
-	pte->cacheable = section_cacheable(frame);
 	pte->xn = 0;
 	pte->domain = 0;
 	pte->should_be_zero_1 = 0;
 	pte->access_permission_0 = PTE_AP_USER_NO_KERNEL_RW;
+#ifdef PROCESSOR_ARCH_armv7_a
+	//TODO: Use write-back write-allocate caches
+	pte->tex = section_cacheable(frame) ? 6 : 0;
+	pte->bufferable = section_cacheable(frame) ? 0 : 0;
+	pte->cacheable = section_cacheable(frame) ? 1 : 0;
+#else
+	pte->bufferable = 1;
+	pte->cacheable = section_cacheable(frame);
 	pte->tex = 0;
+#endif
 	pte->access_permission_1 = 0;
 	pte->shareable = 0;
Index: kernel/arch/arm32/include/arch/mm/page_armv6.h
===================================================================
--- kernel/arch/arm32/include/arch/mm/page_armv6.h	(revision 8abcf4e7f08fa2a990c4bde86e31ad7865a13354)
+++ kernel/arch/arm32/include/arch/mm/page_armv6.h	(revision f9f758e8783cc8b9d957992e78eafdbed6d5584f)
@@ -236,10 +236,11 @@
 	if (flags & PAGE_CACHEABLE) {
 		/*
-		 * Write-back, write-allocate memory, see ch. B3.8.2
+		 * Write-through, no write-allocate memory, see ch. B3.8.2
 		 * (p. B3-1358) of ARM Architecture reference manual.
 		 */
-		p->tex = 1;
+		//TODO: Use writeback, write-allocate caches
+		p->tex = 6;
 		p->cacheable = 1;
-		p->bufferable = 1;
+		p->bufferable = 0;
 	} else {
 		/*
