From: Jinoh Kang jinoh.kang.kr@gmail.com
--- include/winnt.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+)
diff --git a/include/winnt.h b/include/winnt.h index e8a47fec963..f0f13afa508 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -7195,6 +7195,19 @@ static FORCEINLINE void WriteNoFence( LONG volatile *dest, LONG value ) __WINE_STORE32_NO_FENCE( (int volatile *)dest, value ); }
+static FORCEINLINE void WriteNoFence64( LONG64 volatile *dest, LONG64 value ) +{ +#if defined(__i386__) && _MSC_VER < 1700 + __asm { + mov eax, dest + fild value + fistp qword ptr [eax] + } +#else + __WINE_STORE64_NO_FENCE( (__int64 volatile *)dest, value ); +#endif +} + #elif defined(__GNUC__)
static FORCEINLINE BOOLEAN WINAPI BitScanForward(DWORD *index, DWORD mask) @@ -7411,6 +7424,15 @@ static FORCEINLINE void WriteNoFence( LONG volatile *dest, LONG value ) __WINE_ATOMIC_STORE_RELAXED( dest, &value ); }
+static FORCEINLINE void WriteNoFence64( LONG64 volatile *dest, LONG64 value ) +{ +#ifdef __i386__ + __asm__ __volatile__( "fildq %1\n\tfistpq %0" : "=m" (*dest) : "m" (value) : "memory", "st" ); +#else + __WINE_ATOMIC_STORE_RELAXED( dest, &value ); +#endif +} + static FORCEINLINE DECLSPEC_NORETURN void __fastfail(unsigned int code) { #if defined(__x86_64__) || defined(__i386__)