[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);