[arm] add arch_sync_cache_range

Change-Id: Id587d967dd4e9128ca130e1386325cafbeea503a
diff --git a/arch/arm/cache-ops.S b/arch/arm/cache-ops.S
index 8a545dc..b169a77 100644
--- a/arch/arm/cache-ops.S
+++ b/arch/arm/cache-ops.S
@@ -342,6 +342,17 @@
 	mcr		p15, 0, r0, c7, c10, 4		// data sync barrier (formerly drain write buffer)
 
 	bx		lr
+
+	/* void arch_sync_cache_range(addr_t start, size_t len); */
+FUNCTION(arch_sync_cache_range)
+	push    { r14 }
+	bl      arch_clean_cache_range
+
+	mov     r0, #0
+	mcr     p15, 0, r0, c7, c5, 0       // invalidate icache to PoU
+
+	pop     { pc }
+
 #else
 #error unhandled cpu
 #endif
@@ -362,5 +373,8 @@
 FUNCTION(arch_clean_invalidate_cache_range)
 	bx		lr
 
+FUNCTION(arch_sync_cache_range)
+	bx		lr
+
 #endif // ARM_WITH_CACHE
 
diff --git a/include/arch/ops.h b/include/arch/ops.h
index 5854b8c..26d0642 100644
--- a/include/arch/ops.h
+++ b/include/arch/ops.h
@@ -51,6 +51,8 @@
 
 void arch_clean_cache_range(addr_t start, size_t len);
 void arch_clean_invalidate_cache_range(addr_t start, size_t len);
+void arch_invalidate_cache_range(addr_t start, size_t len);
+void arch_sync_cache_range(addr_t start, size_t len);
 	
 void arch_idle(void);