X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=tbb%2Finclude%2Ftbb%2Fmachine%2Fibm_aix51.h;h=a5c1d3aadb1fe8f0ce167224c98c4dc211a64835;hb=4c96b4064a92f65beead3cb2453d727187bed40f;hp=54bd080068cf5069a330837f77bc12032f6c60e6;hpb=46ab0514ba58ee00183ff0584c7ea7c9e3d76494;p=casparcg diff --git a/tbb/include/tbb/machine/ibm_aix51.h b/tbb/include/tbb/machine/ibm_aix51.h index 54bd08006..a5c1d3aad 100644 --- a/tbb/include/tbb/machine/ibm_aix51.h +++ b/tbb/include/tbb/machine/ibm_aix51.h @@ -26,10 +26,14 @@ the GNU General Public License. */ -#ifndef __TBB_machine_H +// TODO: revise by comparing with mac_ppc.h + +#if !defined(__TBB_machine_H) || defined(__TBB_machine_ibm_aix51_H) #error Do not include this file directly; include tbb_machine.h instead #endif +#define __TBB_machine_ibm_aix51_H + #define __TBB_WORDSIZE 8 #define __TBB_BIG_ENDIAN 1 @@ -38,23 +42,36 @@ #include extern "C" { - int32_t __TBB_machine_cas_32 (volatile void* ptr, int32_t value, int32_t comparand); int64_t __TBB_machine_cas_64 (volatile void* ptr, int64_t value, int64_t comparand); -void __TBB_machine_flush (); - +void __TBB_machine_flush (); +void __TBB_machine_lwsync (); +void __TBB_machine_isync (); } -#define __TBB_CompareAndSwap4(P,V,C) __TBB_machine_cas_32(P,V,C) -#define __TBB_CompareAndSwap8(P,V,C) __TBB_machine_cas_64(P,V,C) -#define __TBB_CompareAndSwapW(P,V,C) __TBB_machine_cas_64(P,V,C) +// Mapping of old entry point names retained for the sake of backward binary compatibility +#define __TBB_machine_cmpswp4 __TBB_machine_cas_32 +#define __TBB_machine_cmpswp8 __TBB_machine_cas_64 + #define __TBB_Yield() sched_yield() +#define __TBB_USE_GENERIC_PART_WORD_CAS 1 +#define __TBB_USE_GENERIC_FETCH_ADD 1 +#define __TBB_USE_GENERIC_FETCH_STORE 1 +#define __TBB_USE_GENERIC_HALF_FENCED_LOAD_STORE 1 +#define __TBB_USE_GENERIC_RELAXED_LOAD_STORE 1 + #if __GNUC__ -#define __TBB_full_memory_fence() __asm__ __volatile__("sync": : :"memory") -#define __TBB_release_consistency_helper() __asm__ __volatile__("lwsync": : :"memory") + #define __TBB_control_consistency_helper() __asm__ __volatile__( "isync": : :"memory") + #define __TBB_acquire_consistency_helper() __asm__ __volatile__("lwsync": : :"memory") + #define __TBB_release_consistency_helper() __asm__ __volatile__("lwsync": : :"memory") + #define __TBB_full_memory_fence() __asm__ __volatile__( "sync": : :"memory") #else -// IBM C++ Compiler does not support inline assembly -#define __TBB_full_memory_fence() __TBB_machine_flush () -#define __TBB_release_consistency_helper() __TBB_machine_flush () + // IBM C++ Compiler does not support inline assembly + // TODO: Since XL 9.0 or earlier GCC syntax is supported. Replace with more + // lightweight implementation (like in mac_ppc.h) + #define __TBB_control_consistency_helper() __TBB_machine_isync () + #define __TBB_acquire_consistency_helper() __TBB_machine_lwsync () + #define __TBB_release_consistency_helper() __TBB_machine_lwsync () + #define __TBB_full_memory_fence() __TBB_machine_flush () #endif