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)19 static ALWAYS_INLINE void z_barrier_dmem_fence_full(void)
20 {
21 	__asm__ volatile ("dmb sy" ::: "memory");
22 }
23 
z_barrier_dsync_fence_full(void)24 static ALWAYS_INLINE void z_barrier_dsync_fence_full(void)
25 {
26 	__asm__ volatile ("dsb sy" ::: "memory");
27 }
28 
z_barrier_isync_fence_full(void)29 static 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