Changeset 7328ff4 in mainline for kernel/generic/include/barrier.h


Ignore:
Timestamp:
2018-09-06T18:18:52Z (7 years ago)
Author:
Jiří Zárevúcky <jiri.zarevucky@…>
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)
Message:

Use builtin memory fences for kernel barriers, and convert smp_coherence() into a regular function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/barrier.h

    rd51cca8 r7328ff4  
    3030#define KERN_COMPILER_BARRIER_H_
    3131
    32 #include <arch/barrier.h>
     32#include <stdatomic.h>
     33#include <stddef.h>
    3334
    34 #define compiler_barrier() asm volatile ("" ::: "memory")
     35static inline void compiler_barrier(void)
     36{
     37        atomic_signal_fence(memory_order_seq_cst);
     38}
     39
     40static inline void memory_barrier(void)
     41{
     42        atomic_thread_fence(memory_order_seq_cst);
     43}
     44
     45static inline void read_barrier(void)
     46{
     47        atomic_thread_fence(memory_order_acquire);
     48}
     49
     50static 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)
    3557
    3658/** Forces the compiler to access (ie load/store) the variable only once. */
    3759#define ACCESS_ONCE(var) (*((volatile typeof(var)*)&(var)))
    3860
     61extern void smc_coherence(void *, size_t);
     62
    3963#endif /* KERN_COMPILER_BARRIER_H_ */
Note: See TracChangeset for help on using the changeset viewer.