From e4d6dd88c92fce0999724cd3d4307257e30d1428 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 12 Aug 2022 08:31:16 +0800 Subject: [PATCH] [libcpu][arm] fix rt_hw_cpu_dcache_ops clean invalid bug clean_invalid must be set at the same time, and call clean_invalid, or call clean/invalid --- libcpu/arm/cortex-m7/cpu_cache.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libcpu/arm/cortex-m7/cpu_cache.c b/libcpu/arm/cortex-m7/cpu_cache.c index 417558e285..a6c0d62fcf 100644 --- a/libcpu/arm/cortex-m7/cpu_cache.c +++ b/libcpu/arm/cortex-m7/cpu_cache.c @@ -69,8 +69,9 @@ void rt_hw_cpu_dcache_ops(int ops, void* addr, int size) { rt_uint32_t startAddr = (rt_uint32_t)addr & (rt_uint32_t)~(L1CACHE_LINESIZE_BYTE - 1); rt_uint32_t size_byte = size + (rt_uint32_t)addr - startAddr; + rt_uint32_t clean_invalid = RT_HW_CACHE_FLUSH | RT_HW_CACHE_INVALIDATE; - if (ops & (RT_HW_CACHE_FLUSH | RT_HW_CACHE_INVALIDATE)) + if ((ops & clean_invalid) == clean_invalid) { SCB_CleanInvalidateDCache_by_Addr((uint32_t *)startAddr, size_byte); } -- GitLab