zephyr: Use zephyr sys_cache instead of CMSIS (#3162)

When running AOT code in Zephyr on STM32H743VIT6 without
CONFIG_CACHE_MANAGEMENT=y, a hard fault occurs, which leads to
SCB_CleanDCache().

It’s better to use the functions built into Zephyr.
This commit is contained in:
mkolchurin 2024-02-20 04:34:25 +03:00 committed by GitHub
parent 8b8c59589d
commit b9db23b983
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 1 deletions

View File

@ -50,6 +50,12 @@
#include <zephyr/net/net_context.h>
#endif /* end of KERNEL_VERSION_NUMBER < 0x030200 */
#if KERNEL_VERSION_NUMBER >= 0x030300 /* version 3.3.0 */
#if defined(CONFIG_CPU_CORTEX_M7) && defined(CONFIG_ARM_MPU)
#include <zephyr/cache.h>
#endif
#endif /* end of KERNEL_VERSION_NUMBER > 0x030300 */
#ifdef CONFIG_ARM_MPU
#if KERNEL_VERSION_NUMBER < 0x030200 /* version 3.2.0 */
#include <arch/arm/aarch32/cortex_m/cmsis.h>

View File

@ -202,10 +202,14 @@ void
os_dcache_flush()
{
#if defined(CONFIG_CPU_CORTEX_M7) && defined(CONFIG_ARM_MPU)
#if KERNEL_VERSION_NUMBER < 0x030300 /* version 3.3.0 */
uint32 key;
key = irq_lock();
SCB_CleanDCache();
irq_unlock(key);
#else
sys_cache_data_flush_all();
#endif
#elif defined(CONFIG_SOC_CVF_EM7D) && defined(CONFIG_ARC_MPU) \
&& defined(CONFIG_CACHE_FLUSHING)
__asm__ __volatile__("sync");
@ -216,7 +220,11 @@ os_dcache_flush()
void
os_icache_flush(void *start, size_t len)
{}
{
#if KERNEL_VERSION_NUMBER >= 0x030300 /* version 3.3.0 */
sys_cache_instr_flush_range(start, len);
#endif
}
void
set_exec_mem_alloc_func(exec_mem_alloc_func_t alloc_func,