cregit-Linux how code gets into the kernel

Release 4.14 arch/metag/include/asm/barrier.h

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_METAG_BARRIER_H

#define _ASM_METAG_BARRIER_H

#include <asm/metag_mem.h>


#define nop()		asm volatile ("NOP")

#ifdef CONFIG_METAG_META21

/* HTP and above have a system event to fence writes */

static inline void wr_fence(void) { volatile int *flushptr = (volatile int *) LINSYSEVENT_WR_FENCE; barrier(); *flushptr = 0; barrier(); }

Contributors

PersonTokensPropCommitsCommitProp
James Hogan2990.62%150.00%
Mikulas Patocka39.38%150.00%
Total32100.00%2100.00%

#else /* CONFIG_METAG_META21 */ /* * ATP doesn't have system event to fence writes, so it is necessary to flush * the processor write queues as well as possibly the write combiner (depending * on the page being written). * To ensure the write queues are flushed we do 4 writes to a system event * register (in this case write combiner flush) which will also flush the write * combiner. */
static inline void wr_fence(void) { volatile int *flushptr = (volatile int *) LINSYSEVENT_WR_COMBINE_FLUSH; barrier(); *flushptr = 0; *flushptr = 0; *flushptr = 0; *flushptr = 0; barrier(); }

Contributors

PersonTokensPropCommitsCommitProp
James Hogan4493.62%150.00%
Mikulas Patocka36.38%150.00%
Total47100.00%2100.00%

#endif /* !CONFIG_METAG_META21 */ /* flush writes through the write combiner */ #define mb() wr_fence() #define rmb() barrier() #define wmb() mb() #ifdef CONFIG_METAG_SMP_WRITE_REORDERING /* * Write to the atomic memory unlock system event register (command 0). This is * needed before a write to shared memory in a critical section, to prevent * external reordering of writes before the fence on other threads with writes * after the fence on this thread (and to prevent the ensuing cache-memory * incoherence). It is therefore ineffective if used after and on the same * thread as a write. */
static inline void metag_fence(void) { volatile int *flushptr = (volatile int *) LINSYSEVENT_WR_ATOMIC_UNLOCK; barrier(); *flushptr = 0; barrier(); }

Contributors

PersonTokensPropCommitsCommitProp
James Hogan2887.50%133.33%
Mikulas Patocka39.38%133.33%
Michael S. Tsirkin13.12%133.33%
Total32100.00%3100.00%

#define __smp_mb() metag_fence() #define __smp_rmb() metag_fence() #define __smp_wmb() barrier() #else #define metag_fence() do { } while (0) #define __smp_mb() barrier() #define __smp_rmb() barrier() #define __smp_wmb() barrier() #endif #ifdef CONFIG_SMP #define fence() metag_fence() #else #define fence() do { } while (0) #endif #define __smp_mb__before_atomic() barrier() #define __smp_mb__after_atomic() barrier() #include <asm-generic/barrier.h> #endif /* _ASM_METAG_BARRIER_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
James Hogan16672.49%114.29%
Michael S. Tsirkin3013.10%228.57%
Alexander Duyck156.55%114.29%
Mikulas Patocka93.93%114.29%
Peter Zijlstra83.49%114.29%
Greg Kroah-Hartman10.44%114.29%
Total229100.00%7100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.