2009-09-08  Ozkan Sezer  <sezeroz@gmail.com>

	* intrincs/*.c:  Update all declarations to match intrin.h. Include
	only intrin.h, not windows.h.  Removed aliases for non-underscored
	InterlockedAdd, InterlockedAdd64 and InterlockedBitTestAndComplement.
	Added non-underscored aliases for InterlockedAdd, InterlockedAdd64
	and InterlockedBitTestAndComplement, which aren't actually prototyped
	in intrin.h but are wrappers around other intrinsics.  currentfiber.c,
	currentteb.c, fiberdata.c, membarrier.c, mul128ex.c and umul128ex.c
	remain untouched.
	* Makefile.am (membarrier.c): Moved under src_libmingwex32 (x86-only)
	* Makefile.in: Regenerated.


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@1332 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/intrincs/__stosb.c b/mingw-w64-crt/intrincs/__stosb.c
index 9547b0c..d55bbc0 100644
--- a/mingw-w64-crt/intrincs/__stosb.c
+++ b/mingw-w64-crt/intrincs/__stosb.c
@@ -1,12 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-VOID __stosb(PBYTE Dest,BYTE Data,SIZE_T Count);
-
-VOID __stosb(PBYTE Dest,BYTE Data,SIZE_T Count)
+void __stosb(unsigned char *Dest, unsigned char Data, size_t Count)
 {
   __asm__ __volatile__
   (
@@ -16,5 +10,3 @@
   );
 }
 
-
-
diff --git a/mingw-w64-crt/intrincs/__stosd.c b/mingw-w64-crt/intrincs/__stosd.c
index 29cb371..7143bbd 100644
--- a/mingw-w64-crt/intrincs/__stosd.c
+++ b/mingw-w64-crt/intrincs/__stosd.c
@@ -1,12 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-VOID __stosd(PDWORD Dest,DWORD Data,SIZE_T Count);
-
-VOID __stosd(PDWORD Dest,DWORD Data,SIZE_T Count)
+void __stosd(unsigned long *Dest, unsigned long Data, size_t Count)
 {
   __asm__ __volatile__
   (
@@ -16,5 +10,3 @@
   );
 }
 
-
-
diff --git a/mingw-w64-crt/intrincs/__stosq.c b/mingw-w64-crt/intrincs/__stosq.c
index 3c7e877..269baf8 100644
--- a/mingw-w64-crt/intrincs/__stosq.c
+++ b/mingw-w64-crt/intrincs/__stosq.c
@@ -1,10 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
-#ifdef _WIN64
-VOID __stosq(PDWORD64 Dest,DWORD64 Data,SIZE_T Count)
+#include <intrin.h>
+
+void __stosq(unsigned __int64 *Dest, unsigned __int64 Data, size_t Count)
 {
   __asm__ __volatile__
   (
@@ -14,5 +10,3 @@
   );
 }
 
-#endif
-
diff --git a/mingw-w64-crt/intrincs/__stosw.c b/mingw-w64-crt/intrincs/__stosw.c
index 96932a6..befa4ec 100644
--- a/mingw-w64-crt/intrincs/__stosw.c
+++ b/mingw-w64-crt/intrincs/__stosw.c
@@ -1,12 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-VOID __stosw(PWORD Dest,WORD Data,SIZE_T Count);
-
-VOID __stosw(PWORD Dest,WORD Data,SIZE_T Count)
+void __stosw(unsigned short *Dest, unsigned short Data, size_t Count)
 {
   __asm__ __volatile__
   (
@@ -16,5 +10,3 @@
   );
 }
 
-
-
diff --git a/mingw-w64-crt/intrincs/bitscanfwd.c b/mingw-w64-crt/intrincs/bitscanfwd.c
index 2f4eeae..350a8f9 100644
--- a/mingw-w64-crt/intrincs/bitscanfwd.c
+++ b/mingw-w64-crt/intrincs/bitscanfwd.c
@@ -1,12 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _BitScanForward(DWORD *Index,DWORD Mask);
-
-BOOLEAN _BitScanForward(DWORD *Index,DWORD Mask)
+unsigned char _BitScanForward(unsigned long *Index, unsigned long Mask)
 {
   __asm__ __volatile__("bsfl %1,%0" : "=r" (Mask),"=m" ((*(volatile long *)Index)));
   return (Mask != 0);
diff --git a/mingw-w64-crt/intrincs/bitscanfwd64.c b/mingw-w64-crt/intrincs/bitscanfwd64.c
index 64e3eb9..8d78d81 100644
--- a/mingw-w64-crt/intrincs/bitscanfwd64.c
+++ b/mingw-w64-crt/intrincs/bitscanfwd64.c
@@ -1,10 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _BitScanForward64(DWORD *Index,DWORD64 Mask)
+unsigned char _BitScanForward64(unsigned long *Index, unsigned __int64 Mask)
 {
   __asm__ __volatile__("bsfq %1,%0" : "=r" (Mask),"=m" ((*(volatile long long *)Index)));
   return (Mask != 0);
diff --git a/mingw-w64-crt/intrincs/bitscanrev.c b/mingw-w64-crt/intrincs/bitscanrev.c
index b92bef3..09ca88b 100644
--- a/mingw-w64-crt/intrincs/bitscanrev.c
+++ b/mingw-w64-crt/intrincs/bitscanrev.c
@@ -1,12 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _BitScanReverse(DWORD *Index,DWORD Mask);
-
-BOOLEAN _BitScanReverse(DWORD *Index,DWORD Mask)
+unsigned char _BitScanReverse(unsigned long *Index, unsigned long Mask)
 {
   __asm__ __volatile__("bsrl %1,%0" : "=r" (Mask),"=m" ((*(volatile long *)Index)));
   return (Mask != 0);
diff --git a/mingw-w64-crt/intrincs/bitscanrev64.c b/mingw-w64-crt/intrincs/bitscanrev64.c
index 8be2d87..d0cfc55 100644
--- a/mingw-w64-crt/intrincs/bitscanrev64.c
+++ b/mingw-w64-crt/intrincs/bitscanrev64.c
@@ -1,10 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _BitScanReverse64(DWORD *Index,DWORD64 Mask)
+unsigned char _BitScanReverse64(unsigned long *Index, unsigned __int64 Mask)
 {
   __asm__ __volatile__("bsrq %1,%0" : "=r" (Mask),"=m" ((*(volatile long long *)Index)));
   return (Mask != 0);
diff --git a/mingw-w64-crt/intrincs/bittest.c b/mingw-w64-crt/intrincs/bittest.c
index ab732a5..47b4542 100644
--- a/mingw-w64-crt/intrincs/bittest.c
+++ b/mingw-w64-crt/intrincs/bittest.c
@@ -1,17 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _bittest(LONG const *Base,LONG Offset);
-
-BOOLEAN _bittest(LONG const *Base,LONG Offset)
+unsigned char _bittest(long const *Base, long Offset)
 {
   int old = 0;
   __asm__ __volatile__("btl %2,%1\n\tsbbl %0,%0 "
    :"=r" (old),"=m" ((*(volatile long *) Base))
    :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
diff --git a/mingw-w64-crt/intrincs/bittest64.c b/mingw-w64-crt/intrincs/bittest64.c
index 668cd0e..59ce793 100644
--- a/mingw-w64-crt/intrincs/bittest64.c
+++ b/mingw-w64-crt/intrincs/bittest64.c
@@ -1,17 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-#ifdef _WIN64
-BOOLEAN _bittest64(LONG64 const *Base,LONG64 Offset)
+unsigned char _bittest64(__int64 const *Base, __int64 Offset)
 {
   int old = 0;
   __asm__ __volatile__("btq %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long long *) Base))
     :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
-#endif
 
diff --git a/mingw-w64-crt/intrincs/bittestc.c b/mingw-w64-crt/intrincs/bittestc.c
index 1bc9b7d..0add00f 100644
--- a/mingw-w64-crt/intrincs/bittestc.c
+++ b/mingw-w64-crt/intrincs/bittestc.c
@@ -1,17 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _bittestandcomplement(LONG *Base,LONG Offset);
-
-BOOLEAN _bittestandcomplement(LONG *Base,LONG Offset)
+unsigned char _bittestandcomplement(long *Base, long Offset)
 {
   int old = 0;
   __asm__ __volatile__("btcl %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long *) Base))
     :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
diff --git a/mingw-w64-crt/intrincs/bittestc64.c b/mingw-w64-crt/intrincs/bittestc64.c
index da8a0bd..6e0e421 100644
--- a/mingw-w64-crt/intrincs/bittestc64.c
+++ b/mingw-w64-crt/intrincs/bittestc64.c
@@ -1,15 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _bittestandcomplement64(LONG64 *Base,LONG64 Offset)
+unsigned char _bittestandcomplement64(__int64 *Base, __int64 Offset)
 {
   int old = 0;
   __asm__ __volatile__("btcq %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long long *) Base))
     :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
diff --git a/mingw-w64-crt/intrincs/bittestci.c b/mingw-w64-crt/intrincs/bittestci.c
index 1c89ee7..7855825 100644
--- a/mingw-w64-crt/intrincs/bittestci.c
+++ b/mingw-w64-crt/intrincs/bittestci.c
@@ -1,15 +1,14 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN InterlockedBitTestAndComplement(LONG *Base,LONG Bit)
+unsigned char _InterlockedBitTestAndComplement(long *Base, long Bit);			/* not in intrin.h */
+unsigned char _InterlockedBitTestAndComplement(long *Base, long Bit)
 {
   int old = 0;
   __asm__ __volatile__("lock ; btcl %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long *) Base))
     :"Ir" (Bit));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
+unsigned char InterlockedBitTestAndComplement(long *Base, long Bit) __attribute__((alias("_InterlockedBitTestAndComplement")));
+
diff --git a/mingw-w64-crt/intrincs/bittestr.c b/mingw-w64-crt/intrincs/bittestr.c
index c4254eb..0039db8 100644
--- a/mingw-w64-crt/intrincs/bittestr.c
+++ b/mingw-w64-crt/intrincs/bittestr.c
@@ -1,17 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _bittestandreset(LONG *Base,LONG Offset);
-
-BOOLEAN _bittestandreset(LONG *Base,LONG Offset)
+unsigned char _bittestandreset(long *Base, long Offset)
 {
   int old = 0;
   __asm__ __volatile__("btrl %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long *) Base))
     :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
diff --git a/mingw-w64-crt/intrincs/bittestr64.c b/mingw-w64-crt/intrincs/bittestr64.c
index 799b4ba..dcfacf3 100644
--- a/mingw-w64-crt/intrincs/bittestr64.c
+++ b/mingw-w64-crt/intrincs/bittestr64.c
@@ -1,15 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _bittestandreset64(LONG64 *Base,LONG64 Offset)
+unsigned char _bittestandreset64(__int64 *Base, __int64 Offset)
 {
   int old = 0;
   __asm__ __volatile__("btrq %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long long *) Base))
     :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
diff --git a/mingw-w64-crt/intrincs/bittestri.c b/mingw-w64-crt/intrincs/bittestri.c
index d90fd76..a7b765b 100644
--- a/mingw-w64-crt/intrincs/bittestri.c
+++ b/mingw-w64-crt/intrincs/bittestri.c
@@ -1,17 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _interlockedbittestandreset(LONG *Base,LONG Offset);
-
-BOOLEAN _interlockedbittestandreset(LONG *Base,LONG Offset)
+unsigned char _interlockedbittestandreset(long *Base, long Offset)
 {
   int old = 0;
   __asm__ __volatile__("lock ; btrl %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long *) Base))
     :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
diff --git a/mingw-w64-crt/intrincs/bittestri64.c b/mingw-w64-crt/intrincs/bittestri64.c
index afef57e..a8fb1de 100644
--- a/mingw-w64-crt/intrincs/bittestri64.c
+++ b/mingw-w64-crt/intrincs/bittestri64.c
@@ -1,15 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _interlockedbittestandreset64(LONG64 *Base,LONG64 Offset)
+unsigned char _interlockedbittestandreset64(__int64 *Base, __int64 Offset)
 {
   int old = 0;
   __asm__ __volatile__("lock ; btrq %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long long *) Base))
     :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
diff --git a/mingw-w64-crt/intrincs/bittests.c b/mingw-w64-crt/intrincs/bittests.c
index 8c40b75..b5cbf89 100644
--- a/mingw-w64-crt/intrincs/bittests.c
+++ b/mingw-w64-crt/intrincs/bittests.c
@@ -1,17 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _bittestandset(LONG *Base,LONG Offset);
-
-BOOLEAN _bittestandset(LONG *Base,LONG Offset)
+unsigned char _bittestandset(long *Base, long Offset)
 {
   int old = 0;
   __asm__ __volatile__("btsl %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long *) Base))
     :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
diff --git a/mingw-w64-crt/intrincs/bittests64.c b/mingw-w64-crt/intrincs/bittests64.c
index 3e9ae63..f40d33c 100644
--- a/mingw-w64-crt/intrincs/bittests64.c
+++ b/mingw-w64-crt/intrincs/bittests64.c
@@ -1,15 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _bittestandset64(LONG64 *Base,LONG64 Offset)
+unsigned char _bittestandset64(__int64 *Base, __int64 Offset)
 {
   int old = 0;
   __asm__ __volatile__("btsq %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long long *) Base))
     :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
diff --git a/mingw-w64-crt/intrincs/bittestsi.c b/mingw-w64-crt/intrincs/bittestsi.c
index 0babeb9..af1fda3 100644
--- a/mingw-w64-crt/intrincs/bittestsi.c
+++ b/mingw-w64-crt/intrincs/bittestsi.c
@@ -1,17 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _interlockedbittestandset(LONG *Base,LONG Offset);
-
-BOOLEAN _interlockedbittestandset(LONG *Base,LONG Offset)
+unsigned char _interlockedbittestandset(long *Base, long Offset)
 {
   int old = 0;
   __asm__ __volatile__("lock ; btsl %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long *) Base))
     :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
diff --git a/mingw-w64-crt/intrincs/bittestsi64.c b/mingw-w64-crt/intrincs/bittestsi64.c
index 6a6966f..384f4c6 100644
--- a/mingw-w64-crt/intrincs/bittestsi64.c
+++ b/mingw-w64-crt/intrincs/bittestsi64.c
@@ -1,15 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-BOOLEAN _interlockedbittestandset64(LONG64 *Base,LONG64 Offset)
+unsigned char _interlockedbittestandset64(__int64 *Base, __int64 Offset)
 {
   int old = 0;
   __asm__ __volatile__("lock ; btsq %2,%1\n\tsbbl %0,%0 "
     :"=r" (old),"=m" ((*(volatile long long *) Base))
     :"Ir" (Offset));
-  return (BOOLEAN) (old != 0);
+  return (old != 0);
 }
 
diff --git a/mingw-w64-crt/intrincs/cpuid.c b/mingw-w64-crt/intrincs/cpuid.c
index 00369e8..0a87bf1 100644
--- a/mingw-w64-crt/intrincs/cpuid.c
+++ b/mingw-w64-crt/intrincs/cpuid.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-  void __cpuid(int CPUInfo[4], int InfoType);
+#include <intrin.h>
 
   void __cpuid(int CPUInfo[4], int InfoType)
   {
diff --git a/mingw-w64-crt/intrincs/ilockadd.c b/mingw-w64-crt/intrincs/ilockadd.c
index 26b5e86..ed6eddd 100644
--- a/mingw-w64-crt/intrincs/ilockadd.c
+++ b/mingw-w64-crt/intrincs/ilockadd.c
@@ -1,15 +1,10 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-/* for __x86_64 only */
-
-LONG InterlockedAdd(LONG volatile *Addend,LONG Value)
+long _InterlockedAdd(long volatile *Addend, long Value);			/* not in intrin.h */
+long _InterlockedAdd(long volatile *Addend, long Value)
 {
 /* return InterlockedExchangeAdd(Addend,Value) + Value; */
-  LONG ret;
+  long ret;
   __asm__ __volatile__ ("lock\n\t"
            "xaddl %0,(%1)"
            : "=r" (ret)
@@ -18,3 +13,5 @@
   return ret + Value;
 }
 
+long InterlockedAdd(long volatile *Addend, long Value) __attribute__((alias("_InterlockedAdd")));
+
diff --git a/mingw-w64-crt/intrincs/ilockadd64.c b/mingw-w64-crt/intrincs/ilockadd64.c
index 991febe..49b61d1 100644
--- a/mingw-w64-crt/intrincs/ilockadd64.c
+++ b/mingw-w64-crt/intrincs/ilockadd64.c
@@ -1,15 +1,10 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-/* for __x86_64 only */
-
-LONG64 InterlockedAdd64(LONG64 volatile *Addend,LONG64 Value)
+__int64 _InterlockedAdd64(__int64 volatile *Addend, __int64 Value);			/* not in intrin.h */
+__int64 _InterlockedAdd64(__int64 volatile *Addend, __int64 Value)
 {
 /* return InterlockedExchangeAdd64(Addend,Value) + Value; */
-  LONG64 ret;
+  __int64 ret;
   __asm__ __volatile__ ("lock\n\t"
            "xaddq %0,(%1)"
            : "=r" (ret)
@@ -18,3 +13,5 @@
   return ret + Value;
 }
 
+__int64 InterlockedAdd64(__int64 volatile *Addend, __int64 Value) __attribute__((alias("_InterlockedAdd64")));
+
diff --git a/mingw-w64-crt/intrincs/ilockand.c b/mingw-w64-crt/intrincs/ilockand.c
index 2fa125d..cda4e20 100644
--- a/mingw-w64-crt/intrincs/ilockand.c
+++ b/mingw-w64-crt/intrincs/ilockand.c
@@ -1,12 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG InterlockedAnd(LONG volatile *Destination,LONG Value);
-
-LONG InterlockedAnd(LONG volatile *Destination,LONG Value)
+long _InterlockedAnd(long volatile *Destination, long Value)
 {
   __asm__ __volatile__("lock ; andl %0,%1"
     : :"r"(Value),"m"(*Destination)
diff --git a/mingw-w64-crt/intrincs/ilockand64.c b/mingw-w64-crt/intrincs/ilockand64.c
index 1b66820..390bee7 100644
--- a/mingw-w64-crt/intrincs/ilockand64.c
+++ b/mingw-w64-crt/intrincs/ilockand64.c
@@ -1,10 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG64 InterlockedAnd64(LONG64 volatile *Destination,LONG64 Value)
+__int64 _InterlockedAnd64(__int64 volatile *Destination, __int64 Value)
 {
   __asm__ __volatile__("lock ; andq %0,%1"
     : : "r"(Value),"m"(*Destination) : "memory");
diff --git a/mingw-w64-crt/intrincs/ilockcxch.c b/mingw-w64-crt/intrincs/ilockcxch.c
index 8118354..550efbe 100644
--- a/mingw-w64-crt/intrincs/ilockcxch.c
+++ b/mingw-w64-crt/intrincs/ilockcxch.c
@@ -1,19 +1,9 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-#undef InterlockedCompareExchange
-LONG _InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand);
-
-LONG _InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand)
+long _InterlockedCompareExchange(long volatile *Destination, long ExChange, long Comperand)
 {
-  LONG prev;
+  long prev;
   __asm__ __volatile__("lock ; cmpxchgl %1,%2" : "=a" (prev) : "q" (ExChange),"m" (*Destination), "0" (Comperand) : "memory");
   return prev;
 }
 
-LONG InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand)
-  __attribute__((alias("_InterlockedCompareExchange")));
-
diff --git a/mingw-w64-crt/intrincs/ilockcxch16.c b/mingw-w64-crt/intrincs/ilockcxch16.c
index 9cadb50..5cddcce 100644
--- a/mingw-w64-crt/intrincs/ilockcxch16.c
+++ b/mingw-w64-crt/intrincs/ilockcxch16.c
@@ -1,14 +1,8 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-SHORT InterlockedCompareExchange16(SHORT volatile *Destination,SHORT ExChange,SHORT Comperand);
-
-SHORT InterlockedCompareExchange16(SHORT volatile *Destination,SHORT ExChange,SHORT Comperand)
+short _InterlockedCompareExchange16(short volatile *Destination, short ExChange, short Comperand)
 {
-  SHORT prev;
+  short prev;
   __asm__ __volatile__("lock ; cmpxchgw %w1,%2"
     :"=a"(prev)
     :"q"(ExChange), "m"(*Destination), "0"(Comperand)
diff --git a/mingw-w64-crt/intrincs/ilockcxch64.c b/mingw-w64-crt/intrincs/ilockcxch64.c
index d539291..a897702 100644
--- a/mingw-w64-crt/intrincs/ilockcxch64.c
+++ b/mingw-w64-crt/intrincs/ilockcxch64.c
@@ -1,12 +1,8 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG64 InterlockedCompareExchange64(LONG64 volatile *Destination,LONG64 ExChange,LONG64 Comperand)
+__int64 _InterlockedCompareExchange64(__int64 volatile *Destination, __int64 ExChange, __int64 Comperand)
 {
-  LONG64 prev;
+  __int64 prev;
   __asm__ __volatile__("lock ; cmpxchgq %1,%2" : "=a" (prev) : "q" (ExChange),"m" (*Destination), "0" (Comperand) : "memory");
   return prev;
 }
diff --git a/mingw-w64-crt/intrincs/ilockcxchptr.c b/mingw-w64-crt/intrincs/ilockcxchptr.c
index 2628ca4..971d4b0 100644
--- a/mingw-w64-crt/intrincs/ilockcxchptr.c
+++ b/mingw-w64-crt/intrincs/ilockcxchptr.c
@@ -1,12 +1,8 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-PVOID InterlockedCompareExchangePointer(PVOID volatile *Destination,PVOID ExChange,PVOID Comperand)
+void *_InterlockedCompareExchangePointer(void * volatile *Destination, void *ExChange, void *Comperand)
 {
-  PVOID prev;
+  void *prev;
   __asm__ __volatile__("lock ; cmpxchgq %1,%2" : "=a" (prev) : "q" (ExChange),"m" (*Destination), "0" (Comperand) : "memory");
   return prev;
 }
diff --git a/mingw-w64-crt/intrincs/ilockdec.c b/mingw-w64-crt/intrincs/ilockdec.c
index fd8fa3e..b285666 100644
--- a/mingw-w64-crt/intrincs/ilockdec.c
+++ b/mingw-w64-crt/intrincs/ilockdec.c
@@ -1,12 +1,8 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG InterlockedDecrement(LONG volatile *Addend)
+long _InterlockedDecrement(long volatile *Addend)
 {
-  LONG ret = -1;
+  long ret = -1;
   __asm__ __volatile__ ("lock\n\t"
 	       "xaddl %0,%1"
 	       : "+r" (ret), "+m" (*Addend)
diff --git a/mingw-w64-crt/intrincs/ilockdec16.c b/mingw-w64-crt/intrincs/ilockdec16.c
index 65270a5..dd457ac 100644
--- a/mingw-w64-crt/intrincs/ilockdec16.c
+++ b/mingw-w64-crt/intrincs/ilockdec16.c
@@ -1,14 +1,8 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-SHORT InterlockedDecrement16(SHORT volatile *Addend);
-
-SHORT InterlockedDecrement16(SHORT volatile *Addend)
+short _InterlockedDecrement16(short volatile *Addend)
 {
-  SHORT ret = -1;
+  short ret = -1;
   __asm__ __volatile__ ("lock\n\t"
 	       "xaddw %0,%1"
 	       : "+r" (ret), "+m" (*Addend)
diff --git a/mingw-w64-crt/intrincs/ilockdec64.c b/mingw-w64-crt/intrincs/ilockdec64.c
index b5956b6..c58e376 100644
--- a/mingw-w64-crt/intrincs/ilockdec64.c
+++ b/mingw-w64-crt/intrincs/ilockdec64.c
@@ -1,12 +1,8 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG64 InterlockedDecrement64(LONG64 volatile *Addend)
+__int64 _InterlockedDecrement64(__int64 volatile *Addend)
 {
-  LONG64 ret = -1LL;
+  __int64 ret = -1LL;
   __asm__ __volatile__ ("lock\n\t"
 	       "xaddq %0,%1"
 	       : "+r" (ret), "+m" (*Addend)
diff --git a/mingw-w64-crt/intrincs/ilockexch.c b/mingw-w64-crt/intrincs/ilockexch.c
index ae3267a..b90ab54 100644
--- a/mingw-w64-crt/intrincs/ilockexch.c
+++ b/mingw-w64-crt/intrincs/ilockexch.c
@@ -1,13 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-#undef InterlockedExchange
-LONG _InterlockedExchange(LONG volatile *Target,LONG Value);
-
-LONG _InterlockedExchange(LONG volatile *Target,LONG Value)
+long _InterlockedExchange(long volatile *Target, long Value)
 {
   __asm__ __volatile("lock ; xchgl %0,%1"
     : "=r"(Value)
@@ -16,6 +9,3 @@
   return Value;
 }
 
-LONG InterlockedExchange(LONG volatile *Target,LONG Value)
-  __attribute__((alias("_InterlockedExchange")));
-
diff --git a/mingw-w64-crt/intrincs/ilockexch64.c b/mingw-w64-crt/intrincs/ilockexch64.c
index fea2af1..245bb3a 100644
--- a/mingw-w64-crt/intrincs/ilockexch64.c
+++ b/mingw-w64-crt/intrincs/ilockexch64.c
@@ -1,10 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG64 InterlockedExchange64(LONG64 volatile *Target,LONG64 Value)
+__int64 _InterlockedExchange64(__int64 volatile *Target, __int64 Value)
 {
   __asm__ __volatile("lock ; xchgq %0,%1"
     : "=r"(Value)
diff --git a/mingw-w64-crt/intrincs/ilockexchadd.c b/mingw-w64-crt/intrincs/ilockexchadd.c
index 11cfdbf..d6a0ced 100644
--- a/mingw-w64-crt/intrincs/ilockexchadd.c
+++ b/mingw-w64-crt/intrincs/ilockexchadd.c
@@ -1,11 +1,8 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
+#include <intrin.h>
 
-LONG InterlockedExchangeAdd(LONG volatile *Addend,LONG Value)
+long _InterlockedExchangeAdd(long volatile *Addend, long Value)
 {
-  LONG ret;
+  long ret;
   __asm__ __volatile__ ("lock\n\t"
            "xaddl %0,(%1)"
            : "=r" (ret)
diff --git a/mingw-w64-crt/intrincs/ilockexchadd64.c b/mingw-w64-crt/intrincs/ilockexchadd64.c
index 1d468d6..9b2e900 100644
--- a/mingw-w64-crt/intrincs/ilockexchadd64.c
+++ b/mingw-w64-crt/intrincs/ilockexchadd64.c
@@ -1,11 +1,8 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
+#include <intrin.h>
 
-LONG64 InterlockedExchangeAdd64(LONG64 volatile *Addend,LONG64 Value)
+__int64 _InterlockedExchangeAdd64(__int64 volatile *Addend, __int64 Value)
 {
-  LONG64 ret;
+  __int64 ret;
   __asm__ __volatile__ ("lock\n\t"
            "xaddq %0,(%1)"
            : "=r" (ret)
diff --git a/mingw-w64-crt/intrincs/ilockexchptr.c b/mingw-w64-crt/intrincs/ilockexchptr.c
index 2c5b7ec..3c21ec6 100644
--- a/mingw-w64-crt/intrincs/ilockexchptr.c
+++ b/mingw-w64-crt/intrincs/ilockexchptr.c
@@ -1,10 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-PVOID InterlockedExchangePointer(PVOID volatile *Target,PVOID Value)
+void *_InterlockedExchangePointer(void * volatile *Target, void *Value)
 {
   __asm__ __volatile("lock ; xchgq %0,%1"
     : "=r"(Value)
diff --git a/mingw-w64-crt/intrincs/ilockinc.c b/mingw-w64-crt/intrincs/ilockinc.c
index abed8d2..0adba46 100644
--- a/mingw-w64-crt/intrincs/ilockinc.c
+++ b/mingw-w64-crt/intrincs/ilockinc.c
@@ -1,12 +1,8 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG InterlockedIncrement(LONG volatile *Addend)
+long _InterlockedIncrement(long volatile *Addend)
 {
-  LONG ret = 1;
+  long ret = 1;
   __asm__ __volatile__ ("lock\n\t"
 	       "xaddl %0,%1"
 	       : "+r" (ret), "+m" (*Addend)
diff --git a/mingw-w64-crt/intrincs/ilockinc16.c b/mingw-w64-crt/intrincs/ilockinc16.c
index 21ff898..2ae70d2 100644
--- a/mingw-w64-crt/intrincs/ilockinc16.c
+++ b/mingw-w64-crt/intrincs/ilockinc16.c
@@ -1,17 +1,12 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-SHORT InterlockedIncrement16(SHORT volatile *Addend);
-
-SHORT InterlockedIncrement16(SHORT volatile *Addend)
+short _InterlockedIncrement16(short volatile *Addend)
 {
-  SHORT ret = 1;
+  short ret = 1;
   __asm__ __volatile__ ("lock\n\t"
 	       "xaddw %0,%1"
 	       : "+r" (ret), "+m" (*Addend)
 	       : : "memory");
   return ret + 1;
 }
+
diff --git a/mingw-w64-crt/intrincs/ilockinc64.c b/mingw-w64-crt/intrincs/ilockinc64.c
index 2549f0e..02b011d 100644
--- a/mingw-w64-crt/intrincs/ilockinc64.c
+++ b/mingw-w64-crt/intrincs/ilockinc64.c
@@ -1,12 +1,8 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG64 InterlockedIncrement64(LONG64 volatile *Addend)
+__int64 _InterlockedIncrement64(__int64 volatile *Addend)
 {
-  LONG64 ret = 1LL;
+  __int64 ret = 1LL;
   __asm__ __volatile__ ("lock\n\t"
 	       "xaddq %0,%1"
 	       : "+r" (ret), "+m" (*Addend)
diff --git a/mingw-w64-crt/intrincs/ilockor.c b/mingw-w64-crt/intrincs/ilockor.c
index e3371dbe..debdf2a 100644
--- a/mingw-w64-crt/intrincs/ilockor.c
+++ b/mingw-w64-crt/intrincs/ilockor.c
@@ -1,12 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG InterlockedOr(LONG volatile *Destination,LONG Value);
-
-LONG InterlockedOr(LONG volatile *Destination,LONG Value)
+long _InterlockedOr(long volatile *Destination, long Value)
 {
   __asm__ __volatile__("lock ; orl %0,%1"
     : : "r"(Value),"m"(*Destination) : "memory");
diff --git a/mingw-w64-crt/intrincs/ilockor64.c b/mingw-w64-crt/intrincs/ilockor64.c
index e379b6f..ebec02e 100644
--- a/mingw-w64-crt/intrincs/ilockor64.c
+++ b/mingw-w64-crt/intrincs/ilockor64.c
@@ -1,10 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG64 InterlockedOr64(LONG64 volatile *Destination,LONG64 Value)
+__int64 _InterlockedOr64(__int64 volatile *Destination, __int64 Value)
 {
   __asm__ __volatile__("lock ; orq %0,%1"
     : : "r"(Value),"m"(*Destination) : "memory");
diff --git a/mingw-w64-crt/intrincs/ilockxor.c b/mingw-w64-crt/intrincs/ilockxor.c
index 190ce1f..3b17db0 100644
--- a/mingw-w64-crt/intrincs/ilockxor.c
+++ b/mingw-w64-crt/intrincs/ilockxor.c
@@ -1,12 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG InterlockedXor(LONG volatile *Destination,LONG Value);
-
-LONG InterlockedXor(LONG volatile *Destination,LONG Value)
+long _InterlockedXor(long volatile *Destination, long Value)
 {
   __asm__ __volatile__("lock ; xorl %0,%1"
     : : "r"(Value),"m"(*Destination) : "memory");
diff --git a/mingw-w64-crt/intrincs/ilockxor64.c b/mingw-w64-crt/intrincs/ilockxor64.c
index 7b81218..2976430 100644
--- a/mingw-w64-crt/intrincs/ilockxor64.c
+++ b/mingw-w64-crt/intrincs/ilockxor64.c
@@ -1,10 +1,6 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
-LONG64 InterlockedXor64(LONG64 volatile *Destination,LONG64 Value)
+__int64 _InterlockedXor64(__int64 volatile *Destination, __int64 Value)
 {
   __asm__ __volatile__("lock ; xorq %0,%1"
     : : "r"(Value),"m"(*Destination) : "memory");
diff --git a/mingw-w64-crt/intrincs/inbyte.c b/mingw-w64-crt/intrincs/inbyte.c
index 1d4c9d6..16b68dd 100644
--- a/mingw-w64-crt/intrincs/inbyte.c
+++ b/mingw-w64-crt/intrincs/inbyte.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-unsigned char __inbyte(unsigned short);
+#include <intrin.h>
 
 unsigned char __inbyte(unsigned short Port)
 {
diff --git a/mingw-w64-crt/intrincs/inbytestring.c b/mingw-w64-crt/intrincs/inbytestring.c
index 73517e4..9f85fbe 100644
--- a/mingw-w64-crt/intrincs/inbytestring.c
+++ b/mingw-w64-crt/intrincs/inbytestring.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-void __inbytestring(unsigned short, unsigned char *, unsigned long);
+#include <intrin.h>
 
 void __inbytestring(unsigned short Port, unsigned char *Buffer, unsigned long Count)
 {
diff --git a/mingw-w64-crt/intrincs/indword.c b/mingw-w64-crt/intrincs/indword.c
index e289902..42c9ab8 100644
--- a/mingw-w64-crt/intrincs/indword.c
+++ b/mingw-w64-crt/intrincs/indword.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-unsigned long __indword(unsigned short);
+#include <intrin.h>
 
 unsigned long __indword(unsigned short Port)
 {
diff --git a/mingw-w64-crt/intrincs/indwordstring.c b/mingw-w64-crt/intrincs/indwordstring.c
index 3dbd66f..f347aad 100644
--- a/mingw-w64-crt/intrincs/indwordstring.c
+++ b/mingw-w64-crt/intrincs/indwordstring.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-void __indwordstring(unsigned short Port,unsigned long *Buffer,unsigned long Count);
+#include <intrin.h>
 
 void __indwordstring(unsigned short Port,unsigned long *Buffer,unsigned long Count)
 {
diff --git a/mingw-w64-crt/intrincs/inword.c b/mingw-w64-crt/intrincs/inword.c
index fedd26f..813ea10 100644
--- a/mingw-w64-crt/intrincs/inword.c
+++ b/mingw-w64-crt/intrincs/inword.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-unsigned short __inword(unsigned short Port);
+#include <intrin.h>
 
 unsigned short __inword(unsigned short Port)
 {
diff --git a/mingw-w64-crt/intrincs/inwordstring.c b/mingw-w64-crt/intrincs/inwordstring.c
index 7487c6f..78c006d 100644
--- a/mingw-w64-crt/intrincs/inwordstring.c
+++ b/mingw-w64-crt/intrincs/inwordstring.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-void __inwordstring(unsigned short Port,unsigned short *Buffer,unsigned long Count);
+#include <intrin.h>
 
 void __inwordstring(unsigned short Port,unsigned short *Buffer,unsigned long Count)
 {
diff --git a/mingw-w64-crt/intrincs/membarrier.c b/mingw-w64-crt/intrincs/membarrier.c
index 26d6960..b6f239a 100644
--- a/mingw-w64-crt/intrincs/membarrier.c
+++ b/mingw-w64-crt/intrincs/membarrier.c
@@ -1,15 +1,9 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
 
-#if(defined(_X86_) && !defined(__x86_64))
-VOID MemoryBarrier (VOID)
+void MemoryBarrier (void);
+void MemoryBarrier (void)
 {
-    LONG Barrier = 0;
+    long Barrier = 0;
     __asm__ __volatile__("xchgl %%eax,%0 "
       :"=r" (Barrier));
 }
-#endif
 
diff --git a/mingw-w64-crt/intrincs/outbyte.c b/mingw-w64-crt/intrincs/outbyte.c
index a1f1993..fed6811 100644
--- a/mingw-w64-crt/intrincs/outbyte.c
+++ b/mingw-w64-crt/intrincs/outbyte.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-void __outbyte(unsigned short Port,unsigned char Data);
+#include <intrin.h>
 
 void __outbyte(unsigned short Port,unsigned char Data)
 {
diff --git a/mingw-w64-crt/intrincs/outbytestring.c b/mingw-w64-crt/intrincs/outbytestring.c
index 21b9615..5878c19 100644
--- a/mingw-w64-crt/intrincs/outbytestring.c
+++ b/mingw-w64-crt/intrincs/outbytestring.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-void __outbytestring(unsigned short Port,unsigned char *Buffer,unsigned long Count);
+#include <intrin.h>
 
 void __outbytestring(unsigned short Port,unsigned char *Buffer,unsigned long Count)
 {
diff --git a/mingw-w64-crt/intrincs/outdword.c b/mingw-w64-crt/intrincs/outdword.c
index f270cfa..c2d3431 100644
--- a/mingw-w64-crt/intrincs/outdword.c
+++ b/mingw-w64-crt/intrincs/outdword.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-void __outdword(unsigned short Port,unsigned long Data);
+#include <intrin.h>
 
 void __outdword(unsigned short Port,unsigned long Data)
 {
diff --git a/mingw-w64-crt/intrincs/outdwordstring.c b/mingw-w64-crt/intrincs/outdwordstring.c
index 2a10a7c..416f91d 100644
--- a/mingw-w64-crt/intrincs/outdwordstring.c
+++ b/mingw-w64-crt/intrincs/outdwordstring.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-void __outdwordstring(unsigned short Port,unsigned long *Buffer,unsigned long Count);
+#include <intrin.h>
 
 void __outdwordstring(unsigned short Port,unsigned long *Buffer,unsigned long Count)
 {
diff --git a/mingw-w64-crt/intrincs/outword.c b/mingw-w64-crt/intrincs/outword.c
index a33f7cd..375ec94 100644
--- a/mingw-w64-crt/intrincs/outword.c
+++ b/mingw-w64-crt/intrincs/outword.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-void __outword(unsigned short Port,unsigned short Data);
+#include <intrin.h>
 
 void __outword(unsigned short Port,unsigned short Data)
 {
diff --git a/mingw-w64-crt/intrincs/outwordstring.c b/mingw-w64-crt/intrincs/outwordstring.c
index d322d8c..824511e 100644
--- a/mingw-w64-crt/intrincs/outwordstring.c
+++ b/mingw-w64-crt/intrincs/outwordstring.c
@@ -4,10 +4,7 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
-
-void __outwordstring(unsigned short Port,unsigned short *Buffer,unsigned long Count);
+#include <intrin.h>
 
 void __outwordstring(unsigned short Port,unsigned short *Buffer,unsigned long Count)
 {
diff --git a/mingw-w64-crt/intrincs/rdtsc.c b/mingw-w64-crt/intrincs/rdtsc.c
index 64b02fa..08ac45f 100644
--- a/mingw-w64-crt/intrincs/rdtsc.c
+++ b/mingw-w64-crt/intrincs/rdtsc.c
@@ -4,13 +4,10 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
-  unsigned __int64 __rdtsc(void);
-
-  unsigned __int64 __rdtsc(void)
-  {
+unsigned __int64 __rdtsc(void)
+{
 #ifdef _WIN64
       unsigned __int64 val1, val2;
 #else
@@ -20,5 +17,5 @@
           "rdtsc" 
           : "=a" (val1), "=d" (val2));
       return ((unsigned __int64)val1) | (((unsigned __int64)val2) << 32);
-  }
+}
 
diff --git a/mingw-w64-crt/intrincs/readcr0.c b/mingw-w64-crt/intrincs/readcr0.c
index 7665a9d..6c635e3 100644
--- a/mingw-w64-crt/intrincs/readcr0.c
+++ b/mingw-w64-crt/intrincs/readcr0.c
@@ -4,16 +4,13 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
 /* Register sizes are different between 32/64 bit mode.
  * So we have to do this for _WIN64 and _WIN32 seperatly.
  */
 
 #ifdef _WIN64
-  unsigned __int64 __readcr0(void);
-
   unsigned __int64 __readcr0(void)
   {
       unsigned __int64 value;
@@ -23,8 +20,6 @@
       return value;
   }
 #else
-  unsigned long __readcr0(void);
-
   unsigned long __readcr0(void)
   {
       unsigned long value;
diff --git a/mingw-w64-crt/intrincs/readcr2.c b/mingw-w64-crt/intrincs/readcr2.c
index f42cf5b..20873ec 100644
--- a/mingw-w64-crt/intrincs/readcr2.c
+++ b/mingw-w64-crt/intrincs/readcr2.c
@@ -4,16 +4,13 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
 /* Register sizes are different between 32/64 bit mode.
  * So we have to do this for _WIN64 and _WIN32 seperatly.
  */
 
 #ifdef _WIN64
-  unsigned __int64 __readcr2(void);
-
   unsigned __int64 __readcr2(void)
   {
       unsigned __int64 value;
@@ -23,8 +20,6 @@
       return value;
   }
 #else
-  unsigned long __readcr2(void);
-
   unsigned long __readcr2(void)
   {
       unsigned long value;
diff --git a/mingw-w64-crt/intrincs/readcr3.c b/mingw-w64-crt/intrincs/readcr3.c
index 43bfc7d..9538474 100644
--- a/mingw-w64-crt/intrincs/readcr3.c
+++ b/mingw-w64-crt/intrincs/readcr3.c
@@ -4,16 +4,13 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
 /* Register sizes are different between 32/64 bit mode.
  * So we have to do this for _WIN64 and _WIN32 seperatly.
  */
 
 #ifdef _WIN64
-  unsigned __int64 __readcr3(void);
-
   unsigned __int64 __readcr3(void)
   {
       unsigned __int64 value;
@@ -23,8 +20,6 @@
       return value;
   }
 #else
-  unsigned long __readcr3(void);
-
   unsigned long __readcr3(void)
   {
       unsigned long value;
diff --git a/mingw-w64-crt/intrincs/readcr4.c b/mingw-w64-crt/intrincs/readcr4.c
index 4ef7a14..f60bc5c 100644
--- a/mingw-w64-crt/intrincs/readcr4.c
+++ b/mingw-w64-crt/intrincs/readcr4.c
@@ -4,16 +4,13 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
 /* Register sizes are different between 32/64 bit mode.
  * So we have to do this for _WIN64 and _WIN32 seperatly.
  */
 
 #ifdef _WIN64
-  unsigned __int64 __readcr4(void);
-
   unsigned __int64 __readcr4(void)
   {
       unsigned __int64 value;
@@ -23,8 +20,6 @@
       return value;
   }
 #else
-  unsigned long __readcr4(void);
-
   unsigned long __readcr4(void)
   {
       unsigned long value;
diff --git a/mingw-w64-crt/intrincs/readcr8.c b/mingw-w64-crt/intrincs/readcr8.c
index c90b4f6..b4e19e4 100644
--- a/mingw-w64-crt/intrincs/readcr8.c
+++ b/mingw-w64-crt/intrincs/readcr8.c
@@ -4,16 +4,13 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
 /* Register sizes are different between 32/64 bit mode.
  * So we have to do this for _WIN64 and _WIN32 seperatly.
  */
 
 #ifdef _WIN64
-  unsigned __int64 __readcr8(void);
-
   unsigned __int64 __readcr8(void)
   {
       unsigned __int64 value;
@@ -23,8 +20,6 @@
       return value;
   }
 #else
-  unsigned long __readcr8(void);
-
   unsigned long __readcr8(void)
   {
       unsigned long value;
diff --git a/mingw-w64-crt/intrincs/readfsbyte.c b/mingw-w64-crt/intrincs/readfsbyte.c
index 6d12df2..e65ebcb 100644
--- a/mingw-w64-crt/intrincs/readfsbyte.c
+++ b/mingw-w64-crt/intrincs/readfsbyte.c
@@ -1,17 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for x86 only */
- BYTE __readfsbyte(DWORD Offset);
-
- BYTE __readfsbyte(DWORD Offset)
- {
-   BYTE ret;
+unsigned char __readfsbyte(unsigned long Offset)
+{
+   unsigned char ret;
    __asm__ volatile ("movb	%%fs:%1,%0"
      : "=r" (ret) ,"=m" ((*(volatile long *) Offset)));
    return ret;
- }
+}
 
diff --git a/mingw-w64-crt/intrincs/readfsdword.c b/mingw-w64-crt/intrincs/readfsdword.c
index 276550b..b1a0c7c 100644
--- a/mingw-w64-crt/intrincs/readfsdword.c
+++ b/mingw-w64-crt/intrincs/readfsdword.c
@@ -1,17 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for x86 only */
- DWORD __readfsdword(DWORD Offset);
-
- DWORD __readfsdword(DWORD Offset)
- {
-   DWORD ret;
+unsigned long __readfsdword(unsigned long Offset)
+{
+   unsigned long ret;
    __asm__ volatile ("movl	%%fs:%1,%0"
      : "=r" (ret) ,"=m" ((*(volatile long *) Offset)));
    return ret;
- }
+}
 
diff --git a/mingw-w64-crt/intrincs/readfsword.c b/mingw-w64-crt/intrincs/readfsword.c
index 1a0c071..1646bd6 100644
--- a/mingw-w64-crt/intrincs/readfsword.c
+++ b/mingw-w64-crt/intrincs/readfsword.c
@@ -1,17 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for x86 only */
- WORD __readfsword(DWORD Offset);
-
- WORD __readfsword(DWORD Offset)
- {
-   WORD ret;
+unsigned short __readfsword(unsigned long Offset)
+{
+   unsigned short ret;
    __asm__ volatile ("movw	%%fs:%1,%0"
      : "=r" (ret) ,"=m" ((*(volatile long *) Offset)));
    return ret;
- }
+}
 
diff --git a/mingw-w64-crt/intrincs/readgsbyte.c b/mingw-w64-crt/intrincs/readgsbyte.c
index 670276a..e40f1f7 100644
--- a/mingw-w64-crt/intrincs/readgsbyte.c
+++ b/mingw-w64-crt/intrincs/readgsbyte.c
@@ -1,16 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for __x86_64 only */
-
- BYTE __readgsbyte(DWORD Offset)
- {
-   BYTE ret;
+unsigned char __readgsbyte(unsigned long Offset)
+{
+   unsigned char ret;
    __asm__ volatile ("movb	%%gs:%1,%0"
-     : "=r" (ret) ,"=m" ((*(volatile long *) (DWORD64) Offset)));
+     : "=r" (ret) ,"=m" ((*(volatile long *) (unsigned __int64) Offset)));
    return ret;
- }
+}
 
diff --git a/mingw-w64-crt/intrincs/readgsdword.c b/mingw-w64-crt/intrincs/readgsdword.c
index 0d5a6e4..18d448a 100644
--- a/mingw-w64-crt/intrincs/readgsdword.c
+++ b/mingw-w64-crt/intrincs/readgsdword.c
@@ -1,16 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for __x86_64 only */
-
- DWORD __readgsdword(DWORD Offset)
- {
-   DWORD ret;
+unsigned long __readgsdword(unsigned long Offset)
+{
+   unsigned long ret;
    __asm__ volatile ("movl	%%gs:%1,%0"
-     : "=r" (ret) ,"=m" ((*(volatile long *) (DWORD64) Offset)));
+     : "=r" (ret) ,"=m" ((*(volatile long *) (unsigned __int64) Offset)));
    return ret;
- }
+}
 
diff --git a/mingw-w64-crt/intrincs/readgsqword.c b/mingw-w64-crt/intrincs/readgsqword.c
index dcd8a72..7510913 100644
--- a/mingw-w64-crt/intrincs/readgsqword.c
+++ b/mingw-w64-crt/intrincs/readgsqword.c
@@ -1,16 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for __x86_64 only */
-
- DWORD64 __readgsqword(DWORD Offset)
- {
+unsigned __int64 __readgsqword(unsigned long Offset)
+{
    void *ret;
    __asm__ volatile ("movq	%%gs:%1,%0"
-     : "=r" (ret) ,"=m" ((*(volatile long *) (DWORD64) Offset)));
-   return (DWORD64) ret;
- }
+     : "=r" (ret) ,"=m" ((*(volatile long *) (unsigned __int64) Offset)));
+   return (unsigned __int64) ret;
+}
 
diff --git a/mingw-w64-crt/intrincs/readgsword.c b/mingw-w64-crt/intrincs/readgsword.c
index c589900..d2a5476 100644
--- a/mingw-w64-crt/intrincs/readgsword.c
+++ b/mingw-w64-crt/intrincs/readgsword.c
@@ -1,16 +1,11 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for __x86_64 only */
-
- WORD __readgsword(DWORD Offset)
- {
-   WORD ret;
+unsigned short __readgsword(unsigned long Offset)
+{
+   unsigned short ret;
    __asm__ volatile ("movw	%%gs:%1,%0"
-     : "=r" (ret) ,"=m" ((*(volatile long *) (DWORD64) Offset)));
+     : "=r" (ret) ,"=m" ((*(volatile long *) (unsigned __int64) Offset)));
    return ret;
- }
+}
 
diff --git a/mingw-w64-crt/intrincs/readmsr.c b/mingw-w64-crt/intrincs/readmsr.c
index 4c417ec..263b328 100644
--- a/mingw-w64-crt/intrincs/readmsr.c
+++ b/mingw-w64-crt/intrincs/readmsr.c
@@ -4,13 +4,10 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
-  unsigned __int64 __readmsr(unsigned long msr);
-
-  unsigned __int64 __readmsr(unsigned long msr)
-  {
+unsigned __int64 __readmsr(unsigned long msr)
+{
 #ifdef _WIN64
       unsigned __int64 val1, val2;
 #else
@@ -21,5 +18,5 @@
            : "=a" (val1), "=d" (val2)
            : "c" (msr));
       return ((unsigned __int64) val1) | (((unsigned __int64)val2) << 32);
-  }
+}
 
diff --git a/mingw-w64-crt/intrincs/writecr0.c b/mingw-w64-crt/intrincs/writecr0.c
index 40e73f8..90b1078 100644
--- a/mingw-w64-crt/intrincs/writecr0.c
+++ b/mingw-w64-crt/intrincs/writecr0.c
@@ -4,16 +4,13 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
 /* Register sizes are different between 32/64 bit mode.
  * So we have to do this for _WIN64 and _WIN32 seperatly.
  */
 
 #ifdef _WIN64
-  void __writecr0(unsigned __int64 Data);
-
   void __writecr0(unsigned __int64 Data)
   {
    __asm__ __volatile__ (
@@ -23,8 +20,6 @@
        : "memory");
   }
 #else
-  void __writecr0(unsigned Data);
-
   void __writecr0(unsigned Data)
   {
     __asm__ __volatile__ (
diff --git a/mingw-w64-crt/intrincs/writecr2.c b/mingw-w64-crt/intrincs/writecr2.c
index b78f6b0..41230fa 100644
--- a/mingw-w64-crt/intrincs/writecr2.c
+++ b/mingw-w64-crt/intrincs/writecr2.c
@@ -4,16 +4,14 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
 /* Register sizes are different between 32/64 bit mode.
  * So we have to do this for _WIN64 and _WIN32 seperatly.
  */
 
 #ifdef _WIN64
-  void __writecr2(unsigned __int64 Data);
-
+  void __writecr2(unsigned __int64 Data);			/* not in intrin.h */
   void __writecr2(unsigned __int64 Data)
   {
    __asm__ __volatile__ (
@@ -23,8 +21,7 @@
        : "memory");
   }
 #else
-  void __writecr2(unsigned Data);
-
+  void __writecr2(unsigned Data);				/* not in intrin.h */
   void __writecr2(unsigned Data)
   {
    __asm__ __volatile__ (
diff --git a/mingw-w64-crt/intrincs/writecr3.c b/mingw-w64-crt/intrincs/writecr3.c
index b463bba..8c51a8f 100644
--- a/mingw-w64-crt/intrincs/writecr3.c
+++ b/mingw-w64-crt/intrincs/writecr3.c
@@ -4,16 +4,13 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
 /* Register sizes are different between 32/64 bit mode.
  * So we have to do this for _WIN64 and _WIN32 seperatly.
  */
 
 #ifdef _WIN64
-  void __writecr3(unsigned __int64 Data);
-
   void __writecr3(unsigned __int64 Data)
   {
    __asm__ __volatile__ (
@@ -23,8 +20,6 @@
        : "memory");
   }
 #else
-  void __writecr3(unsigned Data);
-
   void __writecr3(unsigned Data)
   {
    __asm__ __volatile__ (
diff --git a/mingw-w64-crt/intrincs/writecr4.c b/mingw-w64-crt/intrincs/writecr4.c
index 38291b5..c095413 100644
--- a/mingw-w64-crt/intrincs/writecr4.c
+++ b/mingw-w64-crt/intrincs/writecr4.c
@@ -4,16 +4,13 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
 /* Register sizes are different between 32/64 bit mode.
  * So we have to do this for _WIN64 and _WIN32 seperatly.
  */
 
 #ifdef _WIN64
-  void __writecr4(unsigned __int64 Data);
-
   void __writecr4(unsigned __int64 Data)
   {
      __asm__ __volatile__ (
@@ -23,8 +20,6 @@
          : "memory");
   }
 #else
-  void __writecr4(unsigned Data);
-
   void __writecr4(unsigned Data)
   {
      __asm__ __volatile__ (
diff --git a/mingw-w64-crt/intrincs/writecr8.c b/mingw-w64-crt/intrincs/writecr8.c
index a36cb62..f37a15f 100644
--- a/mingw-w64-crt/intrincs/writecr8.c
+++ b/mingw-w64-crt/intrincs/writecr8.c
@@ -4,16 +4,13 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
 /* Register sizes are different between 32/64 bit mode.
  * So we have to do this for _WIN64 and _WIN32 seperatly.
  */
 
 #ifdef _WIN64
-  void __writecr8(unsigned __int64 Data);
-
   void __writecr8(unsigned __int64 Data)
   {
    __asm__ __volatile__ (
@@ -23,8 +20,6 @@
        : "memory");
   }
 #else
-  void __writecr8(unsigned Data);
-
   void __writecr8(unsigned Data)
   {
    __asm__ __volatile__ (
diff --git a/mingw-w64-crt/intrincs/writefsbyte.c b/mingw-w64-crt/intrincs/writefsbyte.c
index ef216aa..428cc53 100644
--- a/mingw-w64-crt/intrincs/writefsbyte.c
+++ b/mingw-w64-crt/intrincs/writefsbyte.c
@@ -1,15 +1,9 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for x86 only */
- VOID __writefsbyte(DWORD Offset,BYTE Data);
-
- VOID __writefsbyte(DWORD Offset,BYTE Data)
- {
+void __writefsbyte(unsigned long Offset, unsigned char Data)
+{
     __asm__ volatile ("movb	%0,%%fs:%1"
       : "=r" (Data) ,"=m" ((*(volatile long *) Offset)));
- }
+}
 
diff --git a/mingw-w64-crt/intrincs/writefsdword.c b/mingw-w64-crt/intrincs/writefsdword.c
index dde60d2..50b4954 100644
--- a/mingw-w64-crt/intrincs/writefsdword.c
+++ b/mingw-w64-crt/intrincs/writefsdword.c
@@ -1,15 +1,9 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for x86 only */
- VOID __writefsdword(DWORD Offset,DWORD Data);
-
- VOID __writefsdword(DWORD Offset,DWORD Data)
- {
+void __writefsdword(unsigned long Offset, unsigned long Data)
+{
    __asm__ volatile ("movl	%0,%%fs:%1"
      : "=r" (Data) ,"=m" ((*(volatile long *) Offset)));
- }
+}
 
diff --git a/mingw-w64-crt/intrincs/writefsword.c b/mingw-w64-crt/intrincs/writefsword.c
index 2834d17..a8177d2 100644
--- a/mingw-w64-crt/intrincs/writefsword.c
+++ b/mingw-w64-crt/intrincs/writefsword.c
@@ -1,15 +1,9 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for x86 only */
- VOID __writefsword(DWORD Offset,WORD Data);
-
- VOID __writefsword(DWORD Offset,WORD Data)
- {
+void __writefsword(unsigned long Offset, unsigned short Data)
+{
     __asm__ volatile ("movw	%0,%%fs:%1"
       : "=r" (Data) ,"=m" ((*(volatile long *) Offset)));
- }
+}
 
diff --git a/mingw-w64-crt/intrincs/writegsbyte.c b/mingw-w64-crt/intrincs/writegsbyte.c
index 6199d96..0e8e794 100644
--- a/mingw-w64-crt/intrincs/writegsbyte.c
+++ b/mingw-w64-crt/intrincs/writegsbyte.c
@@ -1,14 +1,9 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for __x86_64 only */
-
- VOID __writegsbyte(DWORD Offset,BYTE Data)
- {
+void __writegsbyte(unsigned long Offset, unsigned char Data)
+{
     __asm__ volatile ("movb	%0,%%gs:%1"
-      : "=r" (Data) ,"=m" ((*(volatile long *) (DWORD64) Offset)));
- }
+      : "=r" (Data) ,"=m" ((*(volatile long *) (unsigned __int64) Offset)));
+}
 
diff --git a/mingw-w64-crt/intrincs/writegsdword.c b/mingw-w64-crt/intrincs/writegsdword.c
index edd51f7..8ecca19 100644
--- a/mingw-w64-crt/intrincs/writegsdword.c
+++ b/mingw-w64-crt/intrincs/writegsdword.c
@@ -1,14 +1,9 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for __x86_64 only */
-
- VOID __writegsdword(DWORD Offset,DWORD Data)
- {
+void __writegsdword(unsigned long Offset, unsigned long Data)
+{
    __asm__ volatile ("movl	%0,%%gs:%1"
-     : "=r" (Data) ,"=m" ((*(volatile long *) (DWORD64) Offset)));
- }
+     : "=r" (Data) ,"=m" ((*(volatile long *) (unsigned __int64) Offset)));
+}
 
diff --git a/mingw-w64-crt/intrincs/writegsqword.c b/mingw-w64-crt/intrincs/writegsqword.c
index fbc3402..7ff6f0d 100644
--- a/mingw-w64-crt/intrincs/writegsqword.c
+++ b/mingw-w64-crt/intrincs/writegsqword.c
@@ -1,14 +1,9 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for __x86_64 only */
-
- VOID __writegsqword(DWORD Offset,DWORD64 Data)
- {
+void __writegsqword(unsigned long Offset, unsigned __int64 Data)
+{
    __asm__ volatile ("movq	%0,%%gs:%1"
-     : "=r" (Data) ,"=m" ((*(volatile long *) (DWORD64) Offset)));
- }
+     : "=r" (Data) ,"=m" ((*(volatile long *) (unsigned __int64) Offset)));
+}
 
diff --git a/mingw-w64-crt/intrincs/writegsword.c b/mingw-w64-crt/intrincs/writegsword.c
index cadb914..6b5fb37 100644
--- a/mingw-w64-crt/intrincs/writegsword.c
+++ b/mingw-w64-crt/intrincs/writegsword.c
@@ -1,14 +1,9 @@
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#define __CRT__NO_INLINE
-#include <windows.h>
+#include <intrin.h>
 
 /* for __x86_64 only */
-
- VOID __writegsword(DWORD Offset,WORD Data)
- {
+void __writegsword(unsigned long Offset, unsigned short Data)
+{
     __asm__ volatile ("movw	%0,%%gs:%1"
-      : "=r" (Data) ,"=m" ((*(volatile long *) (DWORD64) Offset)));
- }
+      : "=r" (Data) ,"=m" ((*(volatile long *) (unsigned __int64) Offset)));
+}
 
diff --git a/mingw-w64-crt/intrincs/writemsr.c b/mingw-w64-crt/intrincs/writemsr.c
index 2cd6973..552b564 100644
--- a/mingw-w64-crt/intrincs/writemsr.c
+++ b/mingw-w64-crt/intrincs/writemsr.c
@@ -4,17 +4,14 @@
  * No warranty is given; refer to the file DISCLAIMER within this package.
  */
 
-#define __CRT__NO_INLINE
-#include <_mingw.h>
+#include <intrin.h>
 
-  void __writemsr (unsigned long msr, unsigned __int64 Value);
-
-  void __writemsr (unsigned long msr, unsigned __int64 Value)
-  {
+void __writemsr (unsigned long msr, unsigned __int64 Value)
+{
     unsigned long val1 = Value, val2 = Value >> 32;
    __asm__ __volatile__ (
        "wrmsr"
        :
        : "c" (msr), "a" (val1), "d" (val2));
-  }
+}