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_ */