| /* |
| * Copyright (c) 2013-2014 Wind River Systems, Inc. |
| * Copyright (c) 2020-2022 Qualcomm Innovation Center, Inc. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| /** |
| * @file |
| * @brief Cache manipulation |
| * |
| * This module contains functions for manipulation caches. |
| */ |
| |
| #include <zephyr/arch/cpu.h> |
| #include <zephyr/cache.h> |
| #include <cmsis_core.h> |
| |
| void arch_dcache_enable(void) |
| { |
| SCB_EnableDCache(); |
| } |
| |
| void arch_dcache_disable(void) |
| { |
| SCB_DisableDCache(); |
| } |
| |
| int arch_dcache_flush_all(void) |
| { |
| SCB_CleanDCache(); |
| |
| return 0; |
| } |
| |
| int arch_dcache_invd_all(void) |
| { |
| SCB_InvalidateDCache(); |
| |
| return 0; |
| } |
| |
| int arch_dcache_flush_and_invd_all(void) |
| { |
| SCB_CleanInvalidateDCache(); |
| |
| return 0; |
| } |
| |
| int arch_dcache_flush_range(void *start_addr, size_t size) |
| { |
| SCB_CleanDCache_by_Addr(start_addr, size); |
| |
| return 0; |
| } |
| |
| int arch_dcache_invd_range(void *start_addr, size_t size) |
| { |
| SCB_InvalidateDCache_by_Addr(start_addr, size); |
| |
| return 0; |
| } |
| |
| int arch_dcache_flush_and_invd_range(void *start_addr, size_t size) |
| { |
| SCB_CleanInvalidateDCache_by_Addr(start_addr, size); |
| |
| return 0; |
| } |
| |
| void arch_icache_enable(void) |
| { |
| SCB_EnableICache(); |
| } |
| |
| void arch_icache_disable(void) |
| { |
| SCB_DisableICache(); |
| } |
| |
| int arch_icache_flush_all(void) |
| { |
| return -ENOTSUP; |
| } |
| |
| int arch_icache_invd_all(void) |
| { |
| SCB_InvalidateICache(); |
| |
| return 0; |
| } |
| |
| int arch_icache_flush_and_invd_all(void) |
| { |
| return -ENOTSUP; |
| } |
| |
| int arch_icache_flush_range(void *start_addr, size_t size) |
| { |
| return -ENOTSUP; |
| } |
| |
| int arch_icache_invd_range(void *start_addr, size_t size) |
| { |
| SCB_InvalidateICache_by_Addr(start_addr, size); |
| |
| return 0; |
| } |
| |
| int arch_icache_flush_and_invd_range(void *start_addr, size_t size) |
| { |
| return -ENOTSUP; |
| } |