1 /** 2 * Copyright (c) 2023 Carlo Caione <ccaione@baylibre.com> 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef ZEPHYR_INCLUDE_BARRIER_ARM64_H_ 7 #define ZEPHYR_INCLUDE_BARRIER_ARM64_H_ 8 9 #ifndef ZEPHYR_INCLUDE_SYS_BARRIER_H_ 10 #error Please include <zephyr/sys/barrier.h> 11 #endif 12 13 #include <zephyr/toolchain.h> 14 15 #ifdef __cplusplus 16 extern "C" { 17 #endif 18 z_barrier_dmem_fence_full(void)19static ALWAYS_INLINE void z_barrier_dmem_fence_full(void) 20 { 21 __asm__ volatile ("dmb sy" ::: "memory"); 22 } 23 z_barrier_dsync_fence_full(void)24static ALWAYS_INLINE void z_barrier_dsync_fence_full(void) 25 { 26 __asm__ volatile ("dsb sy" ::: "memory"); 27 } 28 z_barrier_isync_fence_full(void)29static ALWAYS_INLINE void z_barrier_isync_fence_full(void) 30 { 31 __asm__ volatile ("isb" ::: "memory"); 32 } 33 34 #ifdef __cplusplus 35 } 36 #endif 37 38 #endif /* ZEPHYR_INCLUDE_BARRIER_ARM64_H_ */ 39