diff --git a/cc/x86_windows_host.go b/cc/x86_windows_host.go
index 8556a64..ad6fdf3 100644
--- a/cc/x86_windows_host.go
+++ b/cc/x86_windows_host.go
@@ -55,10 +55,25 @@
 	}
 
 	windowsLdflags = []string{
-		"-m32",
 		"-L${windowsGccRoot}/${windowsGccTriple}",
 		"--enable-stdcall-fixup",
 	}
+
+	windowsX86Cflags = []string{
+		"-m32",
+	}
+
+	windowsX8664Cflags = []string{
+		"-m64",
+	}
+
+	windowsX86Ldflags = []string{
+		"-m32",
+	}
+
+	windowsX8664Ldflags = []string{
+		"-m64",
+	}
 )
 
 const (
@@ -75,18 +90,35 @@
 
 	pctx.StaticVariable("windowsCflags", strings.Join(windowsCflags, " "))
 	pctx.StaticVariable("windowsLdflags", strings.Join(windowsLdflags, " "))
+
+	pctx.StaticVariable("windowsX86Cflags", strings.Join(windowsX86Cflags, " "))
+	pctx.StaticVariable("windowsX8664Cflags", strings.Join(windowsX8664Cflags, " "))
+	pctx.StaticVariable("windowsX86Ldflags", strings.Join(windowsX86Ldflags, " "))
+	pctx.StaticVariable("windowsX8664Ldflags", strings.Join(windowsX8664Ldflags, " "))
 }
 
 type toolchainWindows struct {
-	toolchain32Bit
-
 	cFlags, ldFlags string
 }
 
-func (t *toolchainWindows) Name() string {
+type toolchainWindowsX86 struct {
+	toolchain32Bit
+	toolchainWindows
+}
+
+type toolchainWindowsX8664 struct {
+	toolchain64Bit
+	toolchainWindows
+}
+
+func (t *toolchainWindowsX86) Name() string {
 	return "x86"
 }
 
+func (t *toolchainWindowsX8664) Name() string {
+	return "x86_64"
+}
+
 func (t *toolchainWindows) GccRoot() string {
 	return "${windowsGccRoot}"
 }
@@ -99,16 +131,24 @@
 	return windowsGccVersion
 }
 
-func (t *toolchainWindows) Cflags() string {
-	return "${windowsCflags}"
+func (t *toolchainWindowsX86) Cflags() string {
+	return "${windowsCflags} ${windowsX86Cflags}"
+}
+
+func (t *toolchainWindowsX8664) Cflags() string {
+	return "${windowsCflags} ${windowsX8664Cflags}"
 }
 
 func (t *toolchainWindows) Cppflags() string {
 	return ""
 }
 
-func (t *toolchainWindows) Ldflags() string {
-	return "${windowsLdflags}"
+func (t *toolchainWindowsX86) Ldflags() string {
+	return "${windowsLdflags} ${windowsX86Ldflags}"
+}
+
+func (t *toolchainWindowsX8664) Ldflags() string {
+	return "${windowsLdflags} ${windowsX8664Ldflags}"
 }
 
 func (t *toolchainWindows) IncludeFlags() string {
@@ -143,12 +183,18 @@
 	return ".exe"
 }
 
-var toolchainWindowsSingleton Toolchain = &toolchainWindows{}
+var toolchainWindowsX86Singleton Toolchain = &toolchainWindowsX86{}
+var toolchainWindowsX8664Singleton Toolchain = &toolchainWindowsX8664{}
 
-func windowsToolchainFactory(arch common.Arch) Toolchain {
-	return toolchainWindowsSingleton
+func windowsX86ToolchainFactory(arch common.Arch) Toolchain {
+	return toolchainWindowsX86Singleton
+}
+
+func windowsX8664ToolchainFactory(arch common.Arch) Toolchain {
+	return toolchainWindowsX8664Singleton
 }
 
 func init() {
-	registerHostToolchainFactory(common.Windows, common.X86, windowsToolchainFactory)
+	registerHostToolchainFactory(common.Windows, common.X86, windowsX86ToolchainFactory)
+	registerHostToolchainFactory(common.Windows, common.X86_64, windowsX8664ToolchainFactory)
 }
diff --git a/common/arch.go b/common/arch.go
index 08c570e..ee1cfae 100644
--- a/common/arch.go
+++ b/common/arch.go
@@ -264,6 +264,8 @@
 		Windows interface{} `blueprint:"filter(android:\"arch_variant\")"`
 		// Properties for module variants being built to run on windows x86 hosts
 		Windows_x86 interface{} `blueprint:"filter(android:\"arch_variant\")"`
+		// Properties for module variants being built to run on windows x86_64 hosts
+		Windows_x86_64 interface{} `blueprint:"filter(android:\"arch_variant\")"`
 		// Properties for module variants being built to run on linux or darwin hosts
 		Not_windows interface{} `blueprint:"filter(android:\"arch_variant\")"`
 	}
diff --git a/common/variable.go b/common/variable.go
index c899bb4..e9f5915 100644
--- a/common/variable.go
+++ b/common/variable.go
@@ -117,6 +117,7 @@
 	if runtime.GOOS == "linux" {
 		v.CrossHost = stringPtr("windows")
 		v.CrossHostArch = stringPtr("x86")
+		v.CrossHostSecondaryArch = stringPtr("x86_64")
 	}
 }
 
