Changeset 7328ff4 in mainline for kernel/generic/include/barrier.h
- Timestamp:
- 2018-09-06T18:18:52Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ffa73c6
- Parents:
- d51cca8
- git-author:
- Jiří Zárevúcky <jiri.zarevucky@…> (2018-08-13 01:29:17)
- git-committer:
- Jiří Zárevúcky <jiri.zarevucky@…> (2018-09-06 18:18:52)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/barrier.h
rd51cca8 r7328ff4 30 30 #define KERN_COMPILER_BARRIER_H_ 31 31 32 #include <arch/barrier.h> 32 #include <stdatomic.h> 33 #include <stddef.h> 33 34 34 #define compiler_barrier() asm volatile ("" ::: "memory") 35 static inline void compiler_barrier(void) 36 { 37 atomic_signal_fence(memory_order_seq_cst); 38 } 39 40 static inline void memory_barrier(void) 41 { 42 atomic_thread_fence(memory_order_seq_cst); 43 } 44 45 static inline void read_barrier(void) 46 { 47 atomic_thread_fence(memory_order_acquire); 48 } 49 50 static inline void write_barrier(void) 51 { 52 atomic_thread_fence(memory_order_release); 53 } 54 55 #define CS_ENTER_BARRIER() atomic_thread_fence(memory_order_acquire) 56 #define CS_LEAVE_BARRIER() atomic_thread_fence(memory_order_release) 35 57 36 58 /** Forces the compiler to access (ie load/store) the variable only once. */ 37 59 #define ACCESS_ONCE(var) (*((volatile typeof(var)*)&(var))) 38 60 61 extern void smc_coherence(void *, size_t); 62 39 63 #endif /* KERN_COMPILER_BARRIER_H_ */
Note:
See TracChangeset
for help on using the changeset viewer.