--- a/tools/gn/args.cc
+++ b/tools/gn/args.cc
@@ -269,6 +269,7 @@ void Args::SetSystemVarsLocked(Scope* de
   static const char kX64[] = "x64";
   static const char kArm[] = "arm";
   static const char kMips[] = "mipsel";
+  static const char kArm64[] = "arm64";
   const char* arch = nullptr;
 
   // Set the host CPU architecture based on the underlying OS, not
@@ -282,8 +283,10 @@ void Args::SetSystemVarsLocked(Scope* de
     arch = kArm;
   else if (os_arch == "mips")
     arch = kMips;
+  else if (os_arch == "aarch64")
+    arch = kArm64;
   else
-    CHECK(false) << "OS architecture not handled.";
+    CHECK(false) << "OS architecture not handled. " << os_arch;
 
   // Save the OS and architecture as build arguments that are implicitly
   // declared. This is so they can be overridden in a toolchain build args
