Line data Source code
1 0 : /**
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 :
19 : static ALWAYS_INLINE void z_barrier_dmem_fence_full(void)
20 : {
21 : __asm__ volatile ("dmb sy" ::: "memory");
22 : }
23 :
24 : static ALWAYS_INLINE void z_barrier_dsync_fence_full(void)
25 : {
26 : __asm__ volatile ("dsb sy" ::: "memory");
27 : }
28 :
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_ */
|