diff --git a/Engine/lib/convexDecomp/NvThreadConfig.cpp b/Engine/lib/convexDecomp/NvThreadConfig.cpp index af6f2bdda..5756bafa8 100644 --- a/Engine/lib/convexDecomp/NvThreadConfig.cpp +++ b/Engine/lib/convexDecomp/NvThreadConfig.cpp @@ -133,6 +133,8 @@ void tc_spinloop() asm ( "pause" ); #elif defined( _XBOX ) // Pause would do nothing on the Xbox. Threads are not scheduled. + #elif defined( _WIN64 ) + YieldProcessor( ); #else __asm { pause }; #endif @@ -144,7 +146,7 @@ void tc_interlockedExchange(void *dest, const int64_t exchange) // not working assert(false); //__sync_lock_test_and_set((int64_t*)dest, exchange); - #elif defined( _XBOX ) +#elif defined( _XBOX ) || defined( _WIN64 ) InterlockedExchange((volatile LONG *)dest, exchange); #else __asm @@ -172,7 +174,7 @@ NxI32 tc_interlockedCompareExchange(void *dest, NxI32 exchange, NxI32 compare) return 0; //return __sync_val_compare_and_swap((uintptr_t*)dest, exchange, compare); //return __sync_bool_compare_and_swap((uintptr_t*)dest, exchange, compare); - #elif defined( _XBOX ) + #elif defined( _XBOX ) || defined( _WIN64 ) return InterlockedCompareExchange((volatile LONG *)dest, exchange, compare); #else char _ret; @@ -202,7 +204,7 @@ NxI32 tc_interlockedCompareExchange(void *dest, const NxI32 exchange1, const NxI //uint64_t exchange = ((uint64_t)exchange1 << 32) | (uint64_t)exchange2; //uint64_t compare = ((uint64_t)compare1 << 32) | (uint64_t)compare2; //return __sync_bool_compare_and_swap((int64_t*)dest, exchange, compare); - #elif defined( _XBOX ) + #elif defined( _XBOX ) || defined( _WIN64 ) assert(false); return 0; #else