diff --git a/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h b/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h
index 5160724..94e089d 100755
--- a/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h
+++ b/libc/sysdeps/linux/arc/bits/uClibc_arch_features.h
@@ -41,8 +41,14 @@
 /* The default ';' is a comment on ARC. */
 #define __UCLIBC_ASM_LINE_SEP__ `
 
-/* does your target align 64bit values in register pairs ? (32bit arches only) */
-#if defined(__A7__)
+/* does your target align 64bit values in register pairs ? (32bit arches only)
+ *  - ARC700 never had any constraint on reg pairs (even if ABI v3)
+ *  - Inital HS ABI (v3: non upstream gcc) had 64-bit data aligned in even-odd
+ *     reg pairs (thus allowed reg holes when passing such args to calls)
+ *  - Upstream gcc (6.x) HS ABI doesn't have that restriction
+ */
+
+#if defined(__A7__) || (__GNUC__ > 4)
 #undef __UCLIBC_SYSCALL_ALIGN_64BIT__
 #else
 #define __UCLIBC_SYSCALL_ALIGN_64BIT__
