diff options
author | Earnie Boyd <earnie@users.sf.net> | 2012-08-01 19:17:37 +0000 |
---|---|---|
committer | Earnie Boyd <earnie@users.sf.net> | 2012-08-01 19:17:37 +0000 |
commit | 47bc176b426d72b68c3ccac0c20fd3e867c3741a (patch) | |
tree | a370c0391540610a647ec8a93323182a9441686a | |
parent | 458e15e7d74676c5d917ea240ad8c08aee90a339 (diff) | |
download | cygnal-47bc176b426d72b68c3ccac0c20fd3e867c3741a.tar.gz cygnal-47bc176b426d72b68c3ccac0c20fd3e867c3741a.tar.bz2 cygnal-47bc176b426d72b68c3ccac0c20fd3e867c3741a.zip |
* include/winnt.h (MemoryBarrier): Add definition.
-rw-r--r-- | winsup/w32api/ChangeLog | 1 | ||||
-rw-r--r-- | winsup/w32api/include/winnt.h | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/winsup/w32api/ChangeLog b/winsup/w32api/ChangeLog index 38a2df19c..16121619c 100644 --- a/winsup/w32api/ChangeLog +++ b/winsup/w32api/ChangeLog @@ -15,6 +15,7 @@ LONG WINAPI to LONG __cdecl to match Microsoft documentation. (InterlockedIncrement): Ditto. (InterlockedExchange): Ditto. + * include/winnt.h (MemoryBarrier): Add definition. 2012-07-29 Earnie Boyd <earnie@users.sourceforge.net> diff --git a/winsup/w32api/include/winnt.h b/winsup/w32api/include/winnt.h index b31274bbe..24ce2de35 100644 --- a/winsup/w32api/include/winnt.h +++ b/winsup/w32api/include/winnt.h @@ -4035,6 +4035,22 @@ struct _TEB * NtCurrentTeb(void); #endif /* __GNUC__ */ #endif /* _X86_ */ +#if _WIN32_WINNT >= _WIN32_WINNT_VISTA +# if defined(_AMD64_) || defined(__X86_64) +# define MemoryBarrier __faststorefence +# elif defined(_IA64_) +# define MemoryBarrier __mf +# else + FORCEINLINE VOID MemoryBarrier (VOID) { + LONG Barrier = 0; + __asm__ __volatile__("xchgl %%eax,%0 " + :"=r" (Barrier)); + } +# endif +#else +# define MemoryBarrier +#endif + #endif /* RC_INVOKED */ #ifdef __cplusplus |