diff --git a/configure b/configure
index 431e36b484be38805482494695b22f2e60109d20..adf498d452296c2e83282bec50ed8a16a3682d7b 100755
--- a/configure
+++ b/configure
@@ -23497,37 +23497,6 @@ if test $ac_cv_cpp_def___x86_64__ = yes; then
   CFLAGS="$CFLAGS -D__x86_64__"
   LINTFLAGS="$LINTFLAGS -D__x86_64__"
 fi
-
-                    { echo "$as_me:$LINENO: checking whether we need to define _WIN64" >&5
-echo $ECHO_N "checking whether we need to define _WIN64... $ECHO_C" >&6; }
-if test "${ac_cv_cpp_def__WIN64+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifndef _WIN64
-yes
-#endif
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then
-  ac_cv_cpp_def__WIN64=yes
-else
-  ac_cv_cpp_def__WIN64=no
-fi
-rm -f conftest*
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_cpp_def__WIN64" >&5
-echo "${ECHO_T}$ac_cv_cpp_def__WIN64" >&6; }
-if test $ac_cv_cpp_def__WIN64 = yes; then
-  CFLAGS="$CFLAGS -D_WIN64"
-  LINTFLAGS="$LINTFLAGS -D_WIN64"
-fi
  ;;
   *alpha*)          { echo "$as_me:$LINENO: checking whether we need to define __ALPHA__" >&5
 echo $ECHO_N "checking whether we need to define __ALPHA__... $ECHO_C" >&6; }
diff --git a/configure.ac b/configure.ac
index b9a5b241e145d9570e1e15bee325a34f15fe6b13..5d43d53c272a5f312b8e7c0ad90b14248e44182e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1431,8 +1431,7 @@ dnl *** check for the need to define platform-specific symbols
 
 case $host_cpu in
   *i[[3456789]]86*) WINE_CHECK_DEFINE([__i386__]) ;;
-  *x86_64*)         WINE_CHECK_DEFINE([__x86_64__])
-                    WINE_CHECK_DEFINE([_WIN64]) ;;
+  *x86_64*)         WINE_CHECK_DEFINE([__x86_64__]) ;;
   *alpha*)          WINE_CHECK_DEFINE([__ALPHA__]) ;;
   *sparc*)          WINE_CHECK_DEFINE([__sparc__]) ;;
   *powerpc*)        WINE_CHECK_DEFINE([__powerpc__]) ;;
diff --git a/include/msvcrt/direct.h b/include/msvcrt/direct.h
index bd05db9a1ffa513b1cadf22464846cc25e95c602..167e7d74227ee06a4e765f202606292325a8bfe2 100644
--- a/include/msvcrt/direct.h
+++ b/include/msvcrt/direct.h
@@ -26,6 +26,10 @@ typedef unsigned short wchar_t;
 #define __int64 long long
 #endif
 
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
 #ifndef _SIZE_T_DEFINED
 #ifdef _WIN64
 typedef unsigned __int64 size_t;
diff --git a/include/msvcrt/malloc.h b/include/msvcrt/malloc.h
index eff45e8fb287c60d88e564af3ff698870d6b59f6..8f904b35853bfd2dd54adc0557098dc2d144d567 100644
--- a/include/msvcrt/malloc.h
+++ b/include/msvcrt/malloc.h
@@ -38,6 +38,10 @@
 #define __int64 long long
 #endif
 
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
 #ifndef _SIZE_T_DEFINED
 #ifdef _WIN64
 typedef unsigned __int64 size_t;
diff --git a/include/msvcrt/mbstring.h b/include/msvcrt/mbstring.h
index f47a4c035b9c3e6513428117575d94c769b90d81..1da3213a1101df9dcc4ee40bf8d6e0a19fd8d2bb 100644
--- a/include/msvcrt/mbstring.h
+++ b/include/msvcrt/mbstring.h
@@ -27,6 +27,10 @@
 #define __int64 long long
 #endif
 
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
 #ifndef _SIZE_T_DEFINED
 #ifdef _WIN64
 typedef unsigned __int64 size_t;
diff --git a/include/msvcrt/search.h b/include/msvcrt/search.h
index c3a2e5016196fd82621c43338c352aeab215466a..413b697b07a8c03ab50a1d8e55720e20f5281321 100644
--- a/include/msvcrt/search.h
+++ b/include/msvcrt/search.h
@@ -27,6 +27,10 @@
 #define __int64 long long
 #endif
 
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
 #ifndef _SIZE_T_DEFINED
 #ifdef _WIN64
 typedef unsigned __int64 size_t;
diff --git a/include/msvcrt/stddef.h b/include/msvcrt/stddef.h
index d67b3042148d5a0de29799a1fe04a0a9cadd30b3..62bb850e88fa99aebd9d6a5f280527c5d820ad54 100644
--- a/include/msvcrt/stddef.h
+++ b/include/msvcrt/stddef.h
@@ -23,6 +23,10 @@
 #define __WINE_USE_MSVCRT
 #endif
 
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
 #ifndef _WCHAR_T_DEFINED
 #define _WCHAR_T_DEFINED
 #ifndef __cplusplus
diff --git a/include/msvcrt/stdio.h b/include/msvcrt/stdio.h
index bc58de382db963fb8a60ba3c653cb01d41624cb0..dfa983fb9cb45ae1fa5c6f613e2baca7a6bc6f56 100644
--- a/include/msvcrt/stdio.h
+++ b/include/msvcrt/stdio.h
@@ -19,6 +19,10 @@
 #define __int64 long long
 #endif
 
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
 /* file._flag flags */
 #define _IOREAD          0x0001
 #define _IOWRT           0x0002
diff --git a/include/msvcrt/string.h b/include/msvcrt/string.h
index cc0b25e2bba1248361a245befabf123d91698892..bf3994f0cbd5768e8db5a69e6b23977c812b4f96 100644
--- a/include/msvcrt/string.h
+++ b/include/msvcrt/string.h
@@ -18,10 +18,12 @@ typedef unsigned short wchar_t;
 #endif
 #endif
 
-#ifndef _MSC_VER
-# ifndef __int64
-#  define __int64 long long
-# endif
+#if !defined(_MSC_VER) && !defined(__int64)
+#define __int64 long long
+#endif
+
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
 #endif
 
 #ifndef _SIZE_T_DEFINED
diff --git a/include/msvcrt/sys/types.h b/include/msvcrt/sys/types.h
index abb05a316361214d67a0e68b0caad1364fa1e2f2..53d5c6b76fbd72a3f52fa0c073e5a99f32b5d7ca 100644
--- a/include/msvcrt/sys/types.h
+++ b/include/msvcrt/sys/types.h
@@ -27,6 +27,10 @@
 #define __int64 long long
 #endif
 
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
 #ifndef _DEV_T_DEFINED
 typedef unsigned int   _dev_t;
 #define _DEV_T_DEFINED
diff --git a/include/msvcrt/time.h b/include/msvcrt/time.h
index b2caa034cf940450ee4b10eb9487e49cf43957a4..0fbf1df625d7111a4a2fa97f5b4f46d1437afd17 100644
--- a/include/msvcrt/time.h
+++ b/include/msvcrt/time.h
@@ -34,6 +34,10 @@ typedef unsigned short wchar_t;
 #define __int64 long long
 #endif
 
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
 #ifndef _SIZE_T_DEFINED
 #ifdef _WIN64
 typedef unsigned __int64 size_t;
diff --git a/include/msvcrt/wchar.h b/include/msvcrt/wchar.h
index 81982e2aeb55d1164763c82aa8aeaf12e5541b8d..f07db62236323ef913c83e9ec22f8b5d08e53fad 100644
--- a/include/msvcrt/wchar.h
+++ b/include/msvcrt/wchar.h
@@ -39,6 +39,10 @@ typedef unsigned short wchar_t;
 #define __int64 long long
 #endif
 
+#if defined(__x86_64__) && !defined(_WIN64)
+#define _WIN64
+#endif
+
 typedef int mbstate_t;
 
 #ifndef _SIZE_T_DEFINED