Nugget
compiler_gcc_barrier.h
1 // Copyright (c) Electronic Arts Inc. All rights reserved.
4 
5 
6 #ifndef EASTL_ATOMIC_INTERNAL_COMPILER_GCC_BARRIER_H
7 #define EASTL_ATOMIC_INTERNAL_COMPILER_GCC_BARRIER_H
8 
9 #if defined(EA_PRAGMA_ONCE_SUPPORTED)
10  #pragma once
11 #endif
12 
13 
15 //
16 // void EASTL_COMPILER_ATOMIC_COMPILER_BARRIER()
17 //
18 #define EASTL_COMPILER_ATOMIC_COMPILER_BARRIER() \
19  __asm__ __volatile__ ("" ::: "memory")
20 
21 
23 //
24 // void EASTL_COMPILER_ATOMIC_COMPILER_BARRIER_DATA_DEPENDENCY(const T&, type)
25 //
26 #define EASTL_COMPILER_ATOMIC_COMPILER_BARRIER_DATA_DEPENDENCY(val, type) \
27  __asm__ __volatile__ ("" : /* Output Operands */ : "r"(&(val)) : "memory")
28 
29 
30 #endif /* EASTL_ATOMIC_INTERNAL_COMPILER_GCC_BARRIER_H */