Nugget
compiler_gcc_signal_fence.h
1 // Copyright (c) Electronic Arts Inc. All rights reserved.
4 
5 
6 #ifndef EASTL_ATOMIC_INTERNAL_COMPILER_GCC_SIGNAL_FENCE_H
7 #define EASTL_ATOMIC_INTERNAL_COMPILER_GCC_SIGNAL_FENCE_H
8 
9 #if defined(EA_PRAGMA_ONCE_SUPPORTED)
10  #pragma once
11 #endif
12 
13 
14 #define EASTL_GCC_ATOMIC_SIGNAL_FENCE(gccMemoryOrder) \
15  __atomic_signal_fence(gccMemoryOrder)
16 
17 
19 //
20 // void EASTL_COMPILER_ATOMIC_SIGNAL_FENCE_*()
21 //
22 #define EASTL_COMPILER_ATOMIC_SIGNAL_FENCE_RELAXED() \
23  EASTL_GCC_ATOMIC_SIGNAL_FENCE(__ATOMIC_RELAXED)
24 
25 #define EASTL_COMPILER_ATOMIC_SIGNAL_FENCE_ACQUIRE() \
26  EASTL_GCC_ATOMIC_SIGNAL_FENCE(__ATOMIC_ACQUIRE)
27 
28 #define EASTL_COMPILER_ATOMIC_SIGNAL_FENCE_RELEASE() \
29  EASTL_GCC_ATOMIC_SIGNAL_FENCE(__ATOMIC_RELEASE)
30 
31 #define EASTL_COMPILER_ATOMIC_SIGNAL_FENCE_ACQ_REL() \
32  EASTL_GCC_ATOMIC_SIGNAL_FENCE(__ATOMIC_ACQ_REL)
33 
34 #define EASTL_COMPILER_ATOMIC_SIGNAL_FENCE_SEQ_CST() \
35  EASTL_GCC_ATOMIC_SIGNAL_FENCE(__ATOMIC_SEQ_CST)
36 
37 
38 #endif /* EASTL_ATOMIC_INTERNAL_COMPILER_GCC_SIGNAL_FENCE_H */