ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.c
(Generate patch)

Comparing libev/ev.c (file contents):
Revision 1.392 by root, Thu Aug 4 14:37:49 2011 UTC vs.
Revision 1.393 by root, Thu Aug 4 14:47:48 2011 UTC

537 537
538/* ECB_NO_THREADS - ecb is not used by multiple threads, ever */ 538/* ECB_NO_THREADS - ecb is not used by multiple threads, ever */
539/* ECB_NO_SMP - ecb might be used in multiple threads, but only on a single cpu */ 539/* ECB_NO_SMP - ecb might be used in multiple threads, but only on a single cpu */
540 540
541#if ECB_NO_THREADS || ECB_NO_SMP 541#if ECB_NO_THREADS || ECB_NO_SMP
542 #define ECB_MEMORY_FENCE do { } while (0) 542 #define ECB_MEMORY_FENCE do { } while (0)
543 #define ECB_MEMORY_FENCE_ACQUIRE do { } while (0)
544 #define ECB_MEMORY_FENCE_RELEASE do { } while (0)
545#endif 543#endif
546 544
547#ifndef ECB_MEMORY_FENCE 545#ifndef ECB_MEMORY_FENCE
548 #if ECB_GCC_VERSION(2,5) 546 #if ECB_GCC_VERSION(2,5)
549 #if __x86 547 #if __x86
555 #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("lfence" : : : "memory") 553 #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("lfence" : : : "memory")
556 #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("sfence") /* play safe - not needed in any current cpu */ 554 #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("sfence") /* play safe - not needed in any current cpu */
557 #elif __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__ 555 #elif __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__
558 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory") 556 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory")
559 #elif defined(__ARM_ARCH_6__ ) || defined(__ARM_ARCH_6J__ ) \ 557 #elif defined(__ARM_ARCH_6__ ) || defined(__ARM_ARCH_6J__ ) \
560 || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__) \ 558 || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6ZK__)
559 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mcr p15,0,%0,c7,c10,4" : : "r" (0) : "memory")
561 || defined(__ARM_ARCH_7__ ) || defined(__ARM_ARCH_7A__ ) \ 560 #elif defined(__ARM_ARCH_7__ ) || defined(__ARM_ARCH_7A__ ) \
562 || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7R__ ) 561 || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7R__ )
563 #define ECB_MEMORY_FENCE \ 562 #define ECB_MEMORY_FENCE __asm__ __volatile__ ("dsb" : : : "memory")
564 do { \
565 int null = 0; \
566 __asm__ __volatile__ ("mcr p15,0,%0,c6,c10,5", : "=&r" (null) : : "memory"); \
567 while (0)
568 #endif 563 #endif
569 #endif 564 #endif
570#endif 565#endif
571 566
572#ifndef ECB_MEMORY_FENCE 567#ifndef ECB_MEMORY_FENCE

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines