Index: generic/include/errno.h
===================================================================
--- generic/include/errno.h	(revision 77f28f368e225799db450a8ffad05c71468ece58)
+++ generic/include/errno.h	(revision 1ec1fd881ab1eb26a3266e752c23de0e3b38c1eb)
@@ -47,4 +47,5 @@
 #define ETIMEOUT        -12     /* Timeout expired */
 #define EINVAL          -13     /* Invalid value */
+#define EBUSY           -14     /* Resource is busy */
 
 #endif
Index: generic/src/mm/as.c
===================================================================
--- generic/src/mm/as.c	(revision 77f28f368e225799db450a8ffad05c71468ece58)
+++ generic/src/mm/as.c	(revision 1ec1fd881ab1eb26a3266e752c23de0e3b38c1eb)
@@ -545,5 +545,9 @@
 	src_backend = src_area->backend;
 	src_backend_data = src_area->backend_data;
-	
+
+	/* Share the cacheable flag from the original mapping */
+	if (src_flags & AS_AREA_CACHEABLE)
+		dst_flags_mask |= AS_AREA_CACHEABLE;
+
 	if (src_size != acc_size || (src_flags & dst_flags_mask) != dst_flags_mask) {
 		mutex_unlock(&src_area->lock);
