This commit is contained in:
Branimir Karadžić
2017-10-10 20:43:55 -07:00
parent e0c6ee941a
commit f6e6db22a0
2 changed files with 24 additions and 20 deletions

View File

@@ -8,25 +8,6 @@
#include "bx.h"
#if BX_COMPILER_MSVC
# include <math.h> // math.h is included because VS bitches:
// warning C4985: 'ceil': attributes not present on previous declaration.
// must be included before intrin.h.
# include <intrin.h>
# include <windows.h>
# if BX_PLATFORM_WINRT
# define _InterlockedExchangeAdd64 InterlockedExchangeAdd64
# endif // BX_PLATFORM_WINRT
extern "C" void _ReadBarrier();
extern "C" void _WriteBarrier();
extern "C" void _ReadWriteBarrier();
# pragma intrinsic(_ReadBarrier)
# pragma intrinsic(_WriteBarrier)
# pragma intrinsic(_ReadWriteBarrier)
# pragma intrinsic(_InterlockedExchangeAdd)
# pragma intrinsic(_InterlockedCompareExchange)
#endif // BX_COMPILER_MSVC
namespace bx
{
///

View File

@@ -7,6 +7,30 @@
# error "Must be included from bx/cpu.h!"
#endif // BX_CPU_H_HEADER_GUARD
#if BX_COMPILER_MSVC
# if BX_PLATFORM_WINRT
# define _InterlockedExchangeAdd64 InterlockedExchangeAdd64
# endif // BX_PLATFORM_WINRT
extern "C" void _ReadBarrier();
# pragma intrinsic(_ReadBarrier)
extern "C" void _WriteBarrier();
# pragma intrinsic(_WriteBarrier)
extern "C" void _ReadWriteBarrier();
# pragma intrinsic(_ReadWriteBarrier)
extern "C" long _InterlockedExchangeAdd(long volatile* _target, long _value);
# pragma intrinsic(_InterlockedExchangeAdd)
extern "C" long _InterlockedCompareExchange(long volatile* _target, long _exchange, long _comparand);
# pragma intrinsic(_InterlockedCompareExchange)
extern "C" void* InterlockedExchangePointer(void volatile* _target, void* _value);
# pragma intrinsic(InterlockedExchangePointer)
#endif // BX_COMPILER_MSVC
namespace bx
{
inline void readBarrier()
@@ -44,7 +68,6 @@ namespace bx
_mm_mfence();
#else
__sync_synchronize();
// asm volatile("mfence":::"memory");
#endif // BX_COMPILER
}