diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 7b1afbb..cea3508 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -54,29 +54,6 @@
 
 
 #
-# AArch64 assembler templates for each syscall stub
-#
-
-aarch64_call = syscall_stub_header + """\
-    stp     x29, x30, [sp, #-16]!
-    mov     x29,  sp
-    str     x8,       [sp, #-16]!
-
-    mov     x8, %(__NR_name)s
-    svc     #0
-
-    ldr     x8,       [sp], #16
-    ldp     x29, x30, [sp], #16
-
-    cmn     x0, #(MAX_ERRNO + 1)
-    cneg    x0, x0, hi
-    b.hi    __set_errno
-
-    ret
-END(%(func)s)
-"""
-
-#
 # ARM assembler templates for each syscall stub
 #
 
@@ -114,6 +91,30 @@
 
 
 #
+# Arm64 assembler templates for each syscall stub
+#
+
+arm64_call = syscall_stub_header + """\
+    stp     x29, x30, [sp, #-16]!
+    mov     x29,  sp
+    str     x8,       [sp, #-16]!
+
+    mov     x8, %(__NR_name)s
+    svc     #0
+
+    ldr     x8,       [sp], #16
+    ldp     x29, x30, [sp], #16
+
+    cmn     x0, #(MAX_ERRNO + 1)
+    cneg    x0, x0, hi
+    b.hi    __set_errno
+
+    ret
+END(%(func)s)
+"""
+
+
+#
 # MIPS assembler templates for each syscall stub
 #
 
@@ -272,10 +273,6 @@
     return stub
 
 
-def aarch64_genstub(syscall):
-    return aarch64_call % syscall
-
-
 def arm_eabi_genstub(syscall):
     num_regs = count_arm_param_registers(syscall["params"])
     if num_regs > 4:
@@ -283,6 +280,10 @@
     return arm_eabi_call_default % syscall
 
 
+def arm64_genstub(syscall):
+    return arm64_call % syscall
+
+
 def mips_genstub(syscall):
     return mips_call % syscall
 
@@ -377,12 +378,12 @@
         for syscall in self.syscalls:
             syscall["__NR_name"] = make__NR_name(syscall["name"])
 
-            if syscall.has_key("aarch64"):
-                syscall["asm-aarch64"] = add_footer(64, aarch64_genstub(syscall), syscall)
-
             if syscall.has_key("arm"):
                 syscall["asm-arm"] = add_footer(32, arm_eabi_genstub(syscall), syscall)
 
+            if syscall.has_key("arm64"):
+                syscall["asm-arm64"] = add_footer(64, arm64_genstub(syscall), syscall)
+
             if syscall.has_key("x86"):
                 if syscall["socketcall_id"] >= 0:
                     syscall["asm-x86"] = add_footer(32, x86_genstub_socketcall(syscall), syscall)
