diff --git a/config.h.win32 b/config.h.win32
index 999641d65..531843e0e 100644
--- a/config.h.win32
+++ b/config.h.win32
@@ -728,7 +728,7 @@
 
 /* The size of `void *', as computed by sizeof. */
 #ifdef _MSC_VER
-#if (defined(_M_X64) || defined(_M_AMD64))
+#if (defined(_M_X64) || defined(_M_AMD64) || defined(_M_ARM64))
 #define SIZEOF_VOID_P 8
 #elif (defined(_M_IX86))
 #define SIZEOF_VOID_P 4
diff --git a/config.h.win32.in b/config.h.win32.in
index eaf7e2818..049c5e9f4 100644
--- a/config.h.win32.in
+++ b/config.h.win32.in
@@ -728,7 +728,7 @@
 
 /* The size of `void *', as computed by sizeof. */
 #ifdef _MSC_VER
-#if (defined(_M_X64) || defined(_M_AMD64))
+#if (defined(_M_X64) || defined(_M_AMD64) || defined(_M_ARM64))
 #define SIZEOF_VOID_P 8
 #elif (defined(_M_IX86))
 #define SIZEOF_VOID_P 4
diff --git a/gio/gdbusaddress.c b/gio/gdbusaddress.c
index 9b3619cb1..6400572a2 100644
--- a/gio/gdbusaddress.c
+++ b/gio/gdbusaddress.c
@@ -1469,7 +1469,7 @@ get_session_address_dbus_launch (GError **error)
 	  wcscat (args, rundll_path);
 	  wcscat (args, L"\" ");
 	  wcscat (args, gio_path_short);
-#if defined(_WIN64) || defined(_M_X64) || defined(_M_AMD64)
+#if defined(_WIN64) || defined(_M_X64) || defined(_M_AMD64) || defined(_M_ARM64)
 	  wcscat (args, L",g_win32_run_session_bus");
 #elif defined (_MSC_VER)
 	  wcscat (args, L",_g_win32_run_session_bus@16");
diff --git a/glib/gatomic.c b/glib/gatomic.c
index e3e49fab4..e257e4377 100644
--- a/glib/gatomic.c
+++ b/glib/gatomic.c
@@ -474,7 +474,7 @@ gsize
 #elif defined (G_PLATFORM_WIN32)
 
 #include <windows.h>
-#if !defined(_M_AMD64) && !defined (_M_IA64) && !defined(_M_X64) && !(defined _MSC_VER && _MSC_VER <= 1200)
+#if !defined(_M_ARM64) && !defined(_M_AMD64) && !defined (_M_IA64) && !defined(_M_X64) && !(defined _MSC_VER && _MSC_VER <= 1200)
 #define InterlockedAnd _InterlockedAnd
 #define InterlockedOr _InterlockedOr
 #define InterlockedXor _InterlockedXor
diff --git a/glib/glibconfig.h.win32 b/glib/glibconfig.h.win32
index d9f893a15..b75a86f10 100644
--- a/glib/glibconfig.h.win32
+++ b/glib/glibconfig.h.win32
@@ -68,7 +68,7 @@ typedef unsigned __int64 guint64;
 #define G_GINT64_FORMAT "I64i"
 #define G_GUINT64_FORMAT "I64u"
 
-#if defined(_WIN64) || defined(_M_X64) || defined(_M_AMD64)
+#if defined(_WIN64) || defined(_M_X64) || defined(_M_AMD64) || defined(_M_ARM64)
 
 #define GLIB_SIZEOF_VOID_P 8
 #define GLIB_SIZEOF_LONG   4
diff --git a/glib/glibconfig.h.win32.in b/glib/glibconfig.h.win32.in
index 9a91c5e96..f0b88c976 100644
--- a/glib/glibconfig.h.win32.in
+++ b/glib/glibconfig.h.win32.in
@@ -68,7 +68,7 @@ typedef unsigned __int64 guint64;
 #define G_GINT64_FORMAT "I64i"
 #define G_GUINT64_FORMAT "I64u"
 
-#if defined(_WIN64) || defined(_M_X64) || defined(_M_AMD64)
+#if defined(_WIN64) || defined(_M_X64) || defined(_M_AMD64) || defined(_M_ARM64)
 
 #define GLIB_SIZEOF_VOID_P 8
 #define GLIB_SIZEOF_LONG   4
