Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at ca98f825ea05edb41346f12408caa30be8a287c6 51 lines 1.0 kB view raw
1#ifndef _ASM_POWERPC_SYNCH_H 2#define _ASM_POWERPC_SYNCH_H 3 4#include <linux/config.h> 5 6#ifdef __powerpc64__ 7#define __SUBARCH_HAS_LWSYNC 8#endif 9 10#ifdef __SUBARCH_HAS_LWSYNC 11# define LWSYNC lwsync 12#else 13# define LWSYNC sync 14#endif 15 16 17/* 18 * Arguably the bitops and *xchg operations don't imply any memory barrier 19 * or SMP ordering, but in fact a lot of drivers expect them to imply 20 * both, since they do on x86 cpus. 21 */ 22#ifdef CONFIG_SMP 23#define EIEIO_ON_SMP "eieio\n" 24#define ISYNC_ON_SMP "\n\tisync" 25#define SYNC_ON_SMP __stringify(LWSYNC) "\n" 26#else 27#define EIEIO_ON_SMP 28#define ISYNC_ON_SMP 29#define SYNC_ON_SMP 30#endif 31 32static inline void eieio(void) 33{ 34 __asm__ __volatile__ ("eieio" : : : "memory"); 35} 36 37static inline void isync(void) 38{ 39 __asm__ __volatile__ ("isync" : : : "memory"); 40} 41 42#ifdef CONFIG_SMP 43#define eieio_on_smp() eieio() 44#define isync_on_smp() isync() 45#else 46#define eieio_on_smp() __asm__ __volatile__("": : :"memory") 47#define isync_on_smp() __asm__ __volatile__("": : :"memory") 48#endif 49 50#endif /* _ASM_POWERPC_SYNCH_H */ 51