Zephyr Project API 4.0.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
barrier.h
Go to the documentation of this file.
1
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
16extern "C" {
17#endif
18
19static ALWAYS_INLINE void z_barrier_dmem_fence_full(void)
20{
21 __asm__ volatile ("dmb sy" ::: "memory");
22}
23
24static ALWAYS_INLINE void z_barrier_dsync_fence_full(void)
25{
26 __asm__ volatile ("dsb sy" ::: "memory");
27}
28
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_ */
#define ALWAYS_INLINE
Definition common.h:129
Macros to abstract toolchain specific capabilities.