diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 296f33c..4ce1258 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -258,7 +258,7 @@
   intrincs/readgsqword.c  intrincs/writegsbyte.c  intrincs/writegsword.c  intrincs/writegsdword.c    \
   intrincs/writegsqword.c intrincs/mul128ex.c     intrincs/umul128ex.c    intrincs/_mul128.c         \
   intrincs/_umul128.c     intrincs/__movsq.c      intrincs/__stosq.c      intrincs/__shiftright128.c \
-  intrincs/__shiftleft128.c
+  intrincs/bittestci64.c  intrincs/__shiftleft128.c
 
 # these only go into the 32 bit version:
 src_intrincs32=\
diff --git a/mingw-w64-crt/Makefile.in b/mingw-w64-crt/Makefile.in
index e148f10..e014149 100644
--- a/mingw-w64-crt/Makefile.in
+++ b/mingw-w64-crt/Makefile.in
@@ -1387,7 +1387,8 @@
 	intrincs/writegsdword.c intrincs/writegsqword.c \
 	intrincs/mul128ex.c intrincs/umul128ex.c intrincs/_mul128.c \
 	intrincs/_umul128.c intrincs/__movsq.c intrincs/__stosq.c \
-	intrincs/__shiftright128.c intrincs/__shiftleft128.c
+	intrincs/__shiftright128.c intrincs/bittestci64.c \
+	intrincs/__shiftleft128.c
 am__objects_36 = intrincs/lib64_libkernel32_a-__movsb.$(OBJEXT) \
 	intrincs/lib64_libkernel32_a-__movsd.$(OBJEXT) \
 	intrincs/lib64_libkernel32_a-__movsw.$(OBJEXT) \
@@ -1481,6 +1482,7 @@
 	intrincs/lib64_libkernel32_a-__movsq.$(OBJEXT) \
 	intrincs/lib64_libkernel32_a-__stosq.$(OBJEXT) \
 	intrincs/lib64_libkernel32_a-__shiftright128.$(OBJEXT) \
+	intrincs/lib64_libkernel32_a-bittestci64.$(OBJEXT) \
 	intrincs/lib64_libkernel32_a-__shiftleft128.$(OBJEXT)
 @LIB64_TRUE@am_lib64_libkernel32_a_OBJECTS = $(am__objects_36) \
 @LIB64_TRUE@	$(am__objects_37)
@@ -3876,7 +3878,7 @@
   intrincs/readgsqword.c  intrincs/writegsbyte.c  intrincs/writegsword.c  intrincs/writegsdword.c    \
   intrincs/writegsqword.c intrincs/mul128ex.c     intrincs/umul128ex.c    intrincs/_mul128.c         \
   intrincs/_umul128.c     intrincs/__movsq.c      intrincs/__stosq.c      intrincs/__shiftright128.c \
-  intrincs/__shiftleft128.c
+  intrincs/bittestci64.c  intrincs/__shiftleft128.c
 
 
 # these only go into the 32 bit version:
@@ -6824,6 +6826,8 @@
 	intrincs/$(am__dirstamp) intrincs/$(DEPDIR)/$(am__dirstamp)
 intrincs/lib64_libkernel32_a-__shiftright128.$(OBJEXT):  \
 	intrincs/$(am__dirstamp) intrincs/$(DEPDIR)/$(am__dirstamp)
+intrincs/lib64_libkernel32_a-bittestci64.$(OBJEXT):  \
+	intrincs/$(am__dirstamp) intrincs/$(DEPDIR)/$(am__dirstamp)
 intrincs/lib64_libkernel32_a-__shiftleft128.$(OBJEXT):  \
 	intrincs/$(am__dirstamp) intrincs/$(DEPDIR)/$(am__dirstamp)
 lib64/libkernel32.a: $(lib64_libkernel32_a_OBJECTS) $(lib64_libkernel32_a_DEPENDENCIES) $(EXTRA_lib64_libkernel32_a_DEPENDENCIES) lib64/$(am__dirstamp)
@@ -9233,6 +9237,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestc64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestci.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestci64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestr64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestri.Po@am__quote@
@@ -22121,6 +22126,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libkernel32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o intrincs/lib64_libkernel32_a-__shiftright128.obj `if test -f 'intrincs/__shiftright128.c'; then $(CYGPATH_W) 'intrincs/__shiftright128.c'; else $(CYGPATH_W) '$(srcdir)/intrincs/__shiftright128.c'; fi`
 
+intrincs/lib64_libkernel32_a-bittestci64.o: intrincs/bittestci64.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libkernel32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT intrincs/lib64_libkernel32_a-bittestci64.o -MD -MP -MF intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestci64.Tpo -c -o intrincs/lib64_libkernel32_a-bittestci64.o `test -f 'intrincs/bittestci64.c' || echo '$(srcdir)/'`intrincs/bittestci64.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestci64.Tpo intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestci64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='intrincs/bittestci64.c' object='intrincs/lib64_libkernel32_a-bittestci64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libkernel32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o intrincs/lib64_libkernel32_a-bittestci64.o `test -f 'intrincs/bittestci64.c' || echo '$(srcdir)/'`intrincs/bittestci64.c
+
+intrincs/lib64_libkernel32_a-bittestci64.obj: intrincs/bittestci64.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libkernel32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT intrincs/lib64_libkernel32_a-bittestci64.obj -MD -MP -MF intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestci64.Tpo -c -o intrincs/lib64_libkernel32_a-bittestci64.obj `if test -f 'intrincs/bittestci64.c'; then $(CYGPATH_W) 'intrincs/bittestci64.c'; else $(CYGPATH_W) '$(srcdir)/intrincs/bittestci64.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestci64.Tpo intrincs/$(DEPDIR)/lib64_libkernel32_a-bittestci64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='intrincs/bittestci64.c' object='intrincs/lib64_libkernel32_a-bittestci64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libkernel32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o intrincs/lib64_libkernel32_a-bittestci64.obj `if test -f 'intrincs/bittestci64.c'; then $(CYGPATH_W) 'intrincs/bittestci64.c'; else $(CYGPATH_W) '$(srcdir)/intrincs/bittestci64.c'; fi`
+
 intrincs/lib64_libkernel32_a-__shiftleft128.o: intrincs/__shiftleft128.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libkernel32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT intrincs/lib64_libkernel32_a-__shiftleft128.o -MD -MP -MF intrincs/$(DEPDIR)/lib64_libkernel32_a-__shiftleft128.Tpo -c -o intrincs/lib64_libkernel32_a-__shiftleft128.o `test -f 'intrincs/__shiftleft128.c' || echo '$(srcdir)/'`intrincs/__shiftleft128.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) intrincs/$(DEPDIR)/lib64_libkernel32_a-__shiftleft128.Tpo intrincs/$(DEPDIR)/lib64_libkernel32_a-__shiftleft128.Po
diff --git a/mingw-w64-crt/intrincs/bittestci.c b/mingw-w64-crt/intrincs/bittestci.c
index d69fdf4..8aab4d8 100644
--- a/mingw-w64-crt/intrincs/bittestci.c
+++ b/mingw-w64-crt/intrincs/bittestci.c
@@ -1,14 +1,6 @@
 #include <intrin.h>
+#include <psdk_inc/intrin-mac.h>
 
-unsigned char _InterlockedBitTestAndComplement(__LONG32 *Base, __LONG32 Bit);			/* not in intrin.h */
-unsigned char _InterlockedBitTestAndComplement(__LONG32 *Base, __LONG32 Bit)
-{
-  int old = 0;
-  __asm__ __volatile__("lock ; btcl %2,%1\n\tsbbl %0,%0 "
-    :"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
-    :"Ir" (Bit) : "memory");
-  return (old != 0);
-}
+__buildbittesti(_interlockedbittestandcomplement, __LONG32, "lock btc", "I", /* unused param */)
 
-unsigned char InterlockedBitTestAndComplement(__LONG32 *Base, __LONG32 Bit) __attribute__((alias("_InterlockedBitTestAndComplement")));
-
+unsigned char InterlockedBitTestAndComplement(__LONG32 volatile *, __LONG32) __attribute__((alias("_interlockedbittestandcomplement")));
diff --git a/mingw-w64-crt/intrincs/bittestci64.c b/mingw-w64-crt/intrincs/bittestci64.c
new file mode 100644
index 0000000..112adaa
--- /dev/null
+++ b/mingw-w64-crt/intrincs/bittestci64.c
@@ -0,0 +1,6 @@
+#include <intrin.h>
+#include <psdk_inc/intrin-mac.h>
+
+__buildbittesti(_interlockedbittestandcomplement64, __int64, "lock btc", "J", /* unused param */)
+
+unsigned char InterlockedBitTestAndComplement64(__int64 volatile *, __int64) __attribute__((alias("_interlockedbittestandcomplement64")));
diff --git a/mingw-w64-crt/intrincs/bittestri.c b/mingw-w64-crt/intrincs/bittestri.c
index e362906..aff9752 100644
--- a/mingw-w64-crt/intrincs/bittestri.c
+++ b/mingw-w64-crt/intrincs/bittestri.c
@@ -1,11 +1,6 @@
 #include <intrin.h>
+#include <psdk_inc/intrin-mac.h>
 
-unsigned char _interlockedbittestandreset(__LONG32 *Base, __LONG32 Offset)
-{
-  int old = 0;
-  __asm__ __volatile__("lock ; btrl %2,%1\n\tsbbl %0,%0 "
-    :"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
-    :"Ir" (Offset) : "memory");
-  return (old != 0);
-}
+__buildbittesti(_interlockedbittestandreset, __LONG32, "lock btr", "I", /* unused param */)
 
+unsigned char InterlockedBitTestAndReset(__LONG32 volatile *, __LONG32) __attribute__((alias("_interlockedbittestandreset")));
diff --git a/mingw-w64-crt/intrincs/bittestri64.c b/mingw-w64-crt/intrincs/bittestri64.c
index f5dc59d..39dad8c 100644
--- a/mingw-w64-crt/intrincs/bittestri64.c
+++ b/mingw-w64-crt/intrincs/bittestri64.c
@@ -1,11 +1,6 @@
 #include <intrin.h>
+#include <psdk_inc/intrin-mac.h>
 
-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) : "memory");
-  return (old != 0);
-}
+__buildbittesti(_interlockedbittestandreset64, __int64, "lock btr", "J", /* unused param */)
 
+unsigned char InterlockedBitTestAndReset64(__int64 volatile *, __int64) __attribute__((alias("_interlockedbittestandreset64")));
diff --git a/mingw-w64-crt/intrincs/bittestsi.c b/mingw-w64-crt/intrincs/bittestsi.c
index 37e3d83..3c7e1e6 100644
--- a/mingw-w64-crt/intrincs/bittestsi.c
+++ b/mingw-w64-crt/intrincs/bittestsi.c
@@ -1,11 +1,6 @@
 #include <intrin.h>
+#include <psdk_inc/intrin-mac.h>
 
-unsigned char _interlockedbittestandset(__LONG32 *Base, __LONG32 Offset)
-{
-  int old = 0;
-  __asm__ __volatile__("lock ; btsl %2,%1\n\tsbbl %0,%0 "
-    :"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
-    :"Ir" (Offset) : "memory");
-  return (old != 0);
-}
+__buildbittesti(_interlockedbittestandset, __LONG32, "lock bts", "I", /* unused param */)
 
+unsigned char InterlockedBitTestAndSet(__LONG32 volatile *, __LONG32) __attribute__((alias("_interlockedbittestandset")));
diff --git a/mingw-w64-crt/intrincs/bittestsi64.c b/mingw-w64-crt/intrincs/bittestsi64.c
index fe16fe0..c8c6b1c 100644
--- a/mingw-w64-crt/intrincs/bittestsi64.c
+++ b/mingw-w64-crt/intrincs/bittestsi64.c
@@ -1,11 +1,6 @@
 #include <intrin.h>
+#include <psdk_inc/intrin-mac.h>
 
-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) : "memory");
-  return (old != 0);
-}
+__buildbittesti(_interlockedbittestandset64, __int64, "lock bts", "J", /* unused param */)
 
+unsigned char InterlockedBitTestAndSet64(__int64 volatile *, __int64) __attribute__((alias("_interlockedbittestandset64")));
diff --git a/mingw-w64-headers/crt/intrin.h b/mingw-w64-headers/crt/intrin.h
index cb16bbc..7f202d3 100644
--- a/mingw-w64-headers/crt/intrin.h
+++ b/mingw-w64-headers/crt/intrin.h
@@ -1037,14 +1037,22 @@
     __MACHINEIW64(unsigned char _bittestandset(__LONG32 *a,__LONG32 b))
     __MACHINEIW64(unsigned char _bittestandreset(__LONG32 *a,__LONG32 b))
     __MACHINEIW64(unsigned char _bittestandcomplement(__LONG32 *a,__LONG32 b))
+    __MACHINEI(unsigned char InterlockedBitTestAndSet(volatile __LONG32 *a,__LONG32 b))
+    __MACHINEI(unsigned char InterlockedBitTestAndReset(volatile __LONG32 *a,__LONG32 b))
+    __MACHINEI(unsigned char InterlockedBitTestAndComplement(volatile __LONG32 *a,__LONG32 b))
     __MACHINEI(unsigned char _interlockedbittestandset(__LONG32 *a,__LONG32 b))
     __MACHINEI(unsigned char _interlockedbittestandreset(__LONG32 *a,__LONG32 b))
+    __MACHINEI(unsigned char _interlockedbittestandcomplement(__LONG32 *a,__LONG32 b))
     __MACHINEW64(__MINGW_EXTENSION unsigned char _bittest64(__int64 const *a,__int64 b))
     __MACHINEW64(__MINGW_EXTENSION unsigned char _bittestandset64(__int64 *a,__int64 b))
     __MACHINEW64(__MINGW_EXTENSION unsigned char _bittestandreset64(__int64 *a,__int64 b))
     __MACHINEW64(__MINGW_EXTENSION unsigned char _bittestandcomplement64(__int64 *a,__int64 b))
+    __MACHINEX64(__MINGW_EXTENSION unsigned char InterlockedBitTestAndSet64(volatile __int64 *a,__int64 b))
+    __MACHINEX64(__MINGW_EXTENSION unsigned char InterlockedBitTestAndReset64(volatile __int64 *a,__int64 b))
+    __MACHINEX64(__MINGW_EXTENSION unsigned char InterlockedBitTestAndComplement64(volatile __int64 *a,__int64 b))
     __MACHINEX64(__MINGW_EXTENSION unsigned char _interlockedbittestandset64(__int64 *a,__int64 b))
     __MACHINEX64(__MINGW_EXTENSION unsigned char _interlockedbittestandreset64(__int64 *a,__int64 b))
+    __MACHINEX64(__MINGW_EXTENSION unsigned char _interlockedbittestandcomplement64(__int64 *a,__int64 b))
     __MACHINEI(void __cpuid(int a[4],int b))
     __MACHINEI(__MINGW_EXTENSION unsigned __int64 __readpmc(unsigned __LONG32 a))
     __MACHINEI(unsigned __LONG32 __segmentlimit(unsigned __LONG32 a))
diff --git a/mingw-w64-headers/include/psdk_inc/intrin-mac.h b/mingw-w64-headers/include/psdk_inc/intrin-mac.h
index 8a2167b..e40c046 100644
--- a/mingw-w64-headers/include/psdk_inc/intrin-mac.h
+++ b/mingw-w64-headers/include/psdk_inc/intrin-mac.h
@@ -6,10 +6,15 @@
 
 /* The macros in this file are included in multiple places */
 
-#ifndef _INTRIN-MAC_
-#define _INTRIN-MAC_
+#ifndef _INTRIN_MAC_
+#define _INTRIN_MAC_
 
 /* This macro is used by __stosb, __stosw, __stosd, __stosq */
+
+/* Parameters: (FunctionName, DataType, Operator)
+   FunctionName: Any valid function name
+   DataType: BYTE, WORD, DWORD or DWORD64 */
+
 #define __buildstos(x, y) void x(y *Dest, y Data, size_t Count) \
 { \
    __asm__ __volatile__ ("rep stos%z[Data]" \
@@ -18,10 +23,35 @@
       : "memory"); \
 }
 
-// This macro is used by InterlockedAnd, InterlockedOr, InterlockedXor, InterlockedAnd64, InterlockedOr64, InterlockedXor64
+/* This macro is used by InterlockedAnd, InterlockedOr, InterlockedXor, InterlockedAnd64, InterlockedOr64, InterlockedXor64 */
+
+/* Parameters: (FunctionName, DataType, Operator)
+   FunctionName: Any valid function name
+   DataType: __LONG32 or LONG64
+   Operator: One of xor, or, and */
 #define __buildlogicali(x, y, o) y x(volatile y *Destination, y Value) \
 { \
     return __sync_fetch_and_ ## o(Destination, Value); \
 }
 
-#endif /* _INTRIN-MAC_ */
+/* This macro is used by InterlockedBitTestAndSet, InterlockedBitTestAndReset, InterlockedBitTestAndComplement,
+   InterlockedBitTestAndSet64, InterlockedBitTestAndReset64, InterlockedBitTestAndComplement64
+   _interlockedbittestandset, _interlockedbittestandreset, _interlockedbittestandcomplement
+   _interlockedbittestandset64, _interlockedbittestandreset64, _interlockedbittestandcomplement64 */
+
+/* Parameters: (FunctionName, DataType, AsmCode, OffsetConstraint, Volatile)
+   FunctionName: Any valid function name
+   DataType: __LONG32 or LONG64
+   OffsetConstraint: either "I" for 32bit data types or "J" for 64.
+   Volatile: either volatile or blank. */
+#define __buildbittesti(x, y, z, a, b) unsigned char x(b y *Base, y Offset) \
+{ \
+   unsigned char old; \
+   __asm__ __volatile__ (z "%z[Base] {%[Offset],%[Base] | %[Base],%[Offset]} ; setc %[old]" \
+      : [old] "=qm" (old), [Base] "+m" (*Base) \
+      : [Offset] a "r" (Offset) \
+      : "memory", "cc"); \
+   return old; \
+}
+
+#endif /* _INTRIN_MAC_ */
diff --git a/mingw-w64-headers/include/winnt.h b/mingw-w64-headers/include/winnt.h
index c6b596b..06b06bb 100644
--- a/mingw-w64-headers/include/winnt.h
+++ b/mingw-w64-headers/include/winnt.h
@@ -1178,14 +1178,10 @@
 #define BitTestAndComplement _bittestandcomplement
 #define BitTestAndSet _bittestandset
 #define BitTestAndReset _bittestandreset
-#define InterlockedBitTestAndSet _interlockedbittestandset
-#define InterlockedBitTestAndReset _interlockedbittestandreset
 #define BitTest64 _bittest64
 #define BitTestAndComplement64 _bittestandcomplement64
 #define BitTestAndSet64 _bittestandset64
 #define BitTestAndReset64 _bittestandreset64
-#define InterlockedBitTestAndSet64 _interlockedbittestandset64
-#define InterlockedBitTestAndReset64 _interlockedbittestandreset64
 
     BOOLEAN _bittest(LONG const *Base,LONG Offset);
     BOOLEAN _bittestandcomplement(LONG *Base,LONG Offset);
@@ -1207,25 +1203,25 @@
     }
 #endif /* __CRT__NO_INLINE */
 
-    BOOLEAN InterlockedBitTestAndComplement(LONG *Base,LONG Bit);
     BOOLEAN _bittestandset(LONG *Base,LONG Offset);
     BOOLEAN _bittestandreset(LONG *Base,LONG Offset);
-    BOOLEAN _interlockedbittestandset(LONG *Base,LONG Offset);
-    BOOLEAN _interlockedbittestandreset(LONG *Base,LONG Offset);
+    BOOLEAN _interlockedbittestandset(__LONG32 *Base,LONG Offset);
+    BOOLEAN _interlockedbittestandreset(__LONG32 *Base,LONG Offset);
+    BOOLEAN _interlockedbittestandcomplement(__LONG32 *Base,LONG Bit);
+    BOOLEAN InterlockedBitTestAndSet(volatile __LONG32 *Base,LONG Offset);
+    BOOLEAN InterlockedBitTestAndReset(volatile __LONG32 *Base,LONG Offset);
+    BOOLEAN InterlockedBitTestAndComplement(volatile __LONG32 *Base,LONG Bit);
     BOOLEAN _bittest64(LONG64 const *Base,LONG64 Offset);
     BOOLEAN _bittestandcomplement64(LONG64 *Base,LONG64 Offset);
     BOOLEAN _bittestandset64(LONG64 *Base,LONG64 Offset);
     BOOLEAN _bittestandreset64(LONG64 *Base,LONG64 Offset);
+    BOOLEAN InterlockedBitTestAndSet64(volatile LONG64 *Base,LONG64 Offset);
+    BOOLEAN InterlockedBitTestAndReset64(volatile LONG64 *Base,LONG64 Offset);
+    BOOLEAN InterlockedBitTestAndComplement64(volatile LONG64 *Base,LONG64 Bit);
     BOOLEAN _interlockedbittestandset64(LONG64 *Base,LONG64 Offset);
     BOOLEAN _interlockedbittestandreset64(LONG64 *Base,LONG64 Offset);
+    BOOLEAN _interlockedbittestandcomplement64(LONG64 *Base,LONG64 Bit);
 #ifndef __CRT__NO_INLINE
-    __CRT_INLINE BOOLEAN InterlockedBitTestAndComplement(LONG *Base,LONG Bit) {
-      int old = 0;
-      __asm__ __volatile__("lock ; btcl %2,%1\n\tsbbl %0,%0 "
-	:"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
-	:"Ir" (Bit) : "memory");
-      return (BOOLEAN) (old!=0);
-    }
     __CRT_INLINE BOOLEAN _bittestandset(LONG *Base,LONG Offset) {
       int old = 0;
       __asm__ __volatile__("btsl %2,%1\n\tsbbl %0,%0 "
@@ -1240,20 +1236,14 @@
 	:"Ir" (Offset) : "memory");
       return (BOOLEAN) (old!=0);
     }
-    __CRT_INLINE BOOLEAN _interlockedbittestandset(LONG *Base,LONG Offset) {
-      int old = 0;
-      __asm__ __volatile__("lock ; btsl %2,%1\n\tsbbl %0,%0 "
-	:"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
-	:"Ir" (Offset) : "memory");
-      return (BOOLEAN) (old!=0);
-    }
-    __CRT_INLINE BOOLEAN _interlockedbittestandreset(LONG *Base,LONG Offset) {
-      int old = 0;
-      __asm__ __volatile__("lock ; btrl %2,%1\n\tsbbl %0,%0 "
-	:"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
-	:"Ir" (Offset) : "memory");
-      return (BOOLEAN) (old!=0);
-    }
+    __CRT_INLINE __buildbittesti(_interlockedbittestandset, __LONG32, "lock bts", "I", /* unused param */)
+    __CRT_INLINE __buildbittesti(_interlockedbittestandreset, __LONG32, "lock btr", "I", /* unused param */)
+    __CRT_INLINE __buildbittesti(_interlockedbittestandcomplement, __LONG32, "lock btc", "I", /* unused param */)
+
+    __CRT_INLINE __buildbittesti(InterlockedBitTestAndSet, __LONG32, "lock bts", "I", volatile)
+    __CRT_INLINE __buildbittesti(InterlockedBitTestAndReset, __LONG32, "lock btr", "I", volatile)
+    __CRT_INLINE __buildbittesti(InterlockedBitTestAndComplement, __LONG32, "lock btc", "I", volatile)
+
     __CRT_INLINE BOOLEAN _bittest64(LONG64 const *Base,LONG64 Offset) {
       int old = 0;
       __asm__ __volatile__("btq %2,%1\n\tsbbl %0,%0 "
@@ -1282,20 +1272,14 @@
 	:"Ir" (Offset) : "memory");
       return (BOOLEAN) (old!=0);
     }
-    __CRT_INLINE BOOLEAN _interlockedbittestandset64(LONG64 *Base,LONG64 Offset) {
-      int old = 0;
-      __asm__ __volatile__("lock ; btsq %2,%1\n\tsbbl %0,%0 "
-	:"=r" (old),"=m" ((*(volatile LONG64 *) Base))
-	:"Ir" (Offset) : "memory");
-      return (BOOLEAN) (old!=0);
-    }
-    __CRT_INLINE BOOLEAN _interlockedbittestandreset64(LONG64 *Base,LONG64 Offset) {
-      int old = 0;
-      __asm__ __volatile__("lock ; btrq %2,%1\n\tsbbl %0,%0 "
-	:"=r" (old),"=m" ((*(volatile LONG64 *) Base))
-	:"Ir" (Offset) : "memory");
-      return (BOOLEAN) (old!=0);
-    }
+    __CRT_INLINE __buildbittesti(_interlockedbittestandset64, LONG64, "lock bts", "J", /* unused param */)
+    __CRT_INLINE __buildbittesti(_interlockedbittestandreset64, LONG64, "lock btr", "J", /* unused param */)
+    __CRT_INLINE __buildbittesti(_interlockedbittestandcomplement64, LONG64, "lock btc", "J", /* unused param */)
+
+    __CRT_INLINE __buildbittesti(InterlockedBitTestAndSet64, LONG64, "lock bts", "J", volatile)
+    __CRT_INLINE __buildbittesti(InterlockedBitTestAndReset64, LONG64, "lock btr", "J", volatile)
+    __CRT_INLINE __buildbittesti(InterlockedBitTestAndComplement64, LONG64, "lock btc", "J", volatile)
+
 #endif /* !__CRT__NO_INLINE */
 
 #define BitScanForward _BitScanForward
@@ -1418,13 +1402,13 @@
       return prev;
     }
 
-__CRT_INLINE __buildlogicali(InterlockedAnd, LONG, and)
-__CRT_INLINE __buildlogicali(InterlockedOr, LONG, or)
-__CRT_INLINE __buildlogicali(InterlockedXor, LONG, xor)
+    __CRT_INLINE __buildlogicali(InterlockedAnd, LONG, and)
+    __CRT_INLINE __buildlogicali(InterlockedOr, LONG, or)
+    __CRT_INLINE __buildlogicali(InterlockedXor, LONG, xor)
 
-__CRT_INLINE __buildlogicali(InterlockedAnd64, LONG64, and)
-__CRT_INLINE __buildlogicali(InterlockedOr64, LONG64, or)
-__CRT_INLINE __buildlogicali(InterlockedXor64, LONG64, xor)
+    __CRT_INLINE __buildlogicali(InterlockedAnd64, LONG64, and)
+    __CRT_INLINE __buildlogicali(InterlockedOr64, LONG64, or)
+    __CRT_INLINE __buildlogicali(InterlockedXor64, LONG64, xor)
 #endif /* !__CRT__NO_INLINE */
 
     LONG InterlockedExchangeAdd(LONG volatile *Addend,LONG Value);
@@ -1809,8 +1793,6 @@
 #define BitTestAndComplement _bittestandcomplement
 #define BitTestAndSet _bittestandset
 #define BitTestAndReset _bittestandreset
-#define InterlockedBitTestAndSet _interlockedbittestandset
-#define InterlockedBitTestAndReset _interlockedbittestandreset
 
 #define BitScanForward _BitScanForward
 #define BitScanReverse _BitScanReverse
@@ -1822,35 +1804,21 @@
 #define InterlockedIncrementAcquire InterlockedIncrement
 #define InterlockedIncrementRelease InterlockedIncrement
 
-    BOOLEAN InterlockedBitTestAndSet(LONG *Base,LONG Bit);
-    BOOLEAN InterlockedBitTestAndReset(LONG *Base,LONG Bit);
-#ifndef __CRT__NO_INLINE
-    __CRT_INLINE BOOLEAN InterlockedBitTestAndSet(LONG *Base,LONG Bit) {
-      int old = 0;
-      __asm__ __volatile__("lock ; btsl %2,%1\n\tsbbl %0,%0 "
-	:"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
-	:"Ir" (Bit) : "memory");
-      return (BOOLEAN) (old!=0);
-    }
+    BOOLEAN _interlockedbittestandset(LONG *Base,LONG Bit);
+    BOOLEAN _interlockedbittestandreset(LONG *Base,LONG Bit);
+    BOOLEAN _interlockedbittestandcomplement(LONG *Base,LONG Bit);
 
-    __CRT_INLINE BOOLEAN InterlockedBitTestAndReset(LONG *Base,LONG Bit) {
-      int old = 0;
-      __asm__ __volatile__("lock ; btrl %2,%1\n\tsbbl %0,%0 "
-	:"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
-	:"Ir" (Bit) : "memory");
-      return (BOOLEAN) (old!=0);
-    }
-#endif /* __CRT__NO_INLINE */
-
-    BOOLEAN InterlockedBitTestAndComplement(LONG *Base,LONG Bit);
+    BOOLEAN InterlockedBitTestAndSet(volatile LONG *Base,LONG Bit);
+    BOOLEAN InterlockedBitTestAndReset(volatile LONG *Base,LONG Bit);
+    BOOLEAN InterlockedBitTestAndComplement(volatile LONG *Base,LONG Bit);
 #ifndef __CRT__NO_INLINE
-    __CRT_INLINE BOOLEAN InterlockedBitTestAndComplement(LONG *Base,LONG Bit) {
-      int old = 0;
-      __asm__ __volatile__("lock ; btcl %2,%1\n\tsbbl %0,%0 "
-	:"=r" (old),"=m" ((*(volatile __LONG32 *) Base))
-	:"Ir" (Bit));
-      return (BOOLEAN) (old!=0);
-    }
+    __CRT_INLINE __buildbittesti(_interlockedbittestandset, LONG, "lock bts", "I", /* unused param */)
+    __CRT_INLINE __buildbittesti(_interlockedbittestandreset, LONG, "lock btr", "I", /* unused param */)
+    __CRT_INLINE __buildbittesti(_interlockedbittestandcomplement, LONG, "lock btc", "I", /* unused param */)
+
+    __CRT_INLINE __buildbittesti(InterlockedBitTestAndSet, LONG, "lock bts", "I", volatile)
+    __CRT_INLINE __buildbittesti(InterlockedBitTestAndReset, LONG, "lock btr", "I", volatile)
+    __CRT_INLINE __buildbittesti(InterlockedBitTestAndComplement, LONG, "lock btc", "I", volatile)
 #endif /* !__CRT__NO_INLINE */
 
 #ifdef _PREFIX_
