diff --git a/zephyr/wrapper.c b/zephyr/wrapper.c index 1bbe36fd025a..d0c42c42384d 100644 --- a/zephyr/wrapper.c +++ b/zephyr/wrapper.c @@ -153,12 +153,6 @@ static void *heap_alloc_aligned_cached(struct k_heap *h, size_t min_align, size_ ptr = heap_alloc_aligned(h, align, aligned_size); if (ptr) { ptr = uncache_to_cache(ptr); - - /* - * Heap can be used by different cores, so cache - * needs to be invalidated before next user - */ - z_xtensa_cache_inv(ptr, aligned_size); } return ptr; @@ -171,6 +165,11 @@ static void heap_free(struct k_heap *h, void *mem) { k_spinlock_key_t key = k_spin_lock(&h->lock); +#ifdef ENABLE_CACHED_HEAP + z_xtensa_cache_flush_inv(z_soc_cached_ptr(mem), + sys_heap_usable_size(h, mem)); +#endif + sys_heap_free(&h->heap, mem); k_spin_unlock(&h->lock, key);