base/asm-common.h: Fix the description comment at the top of the file.
[catacomb] / base / dispatch.c
index b70d44b..908a4e3 100644 (file)
@@ -72,8 +72,8 @@ static __inline__ unsigned setflags(unsigned f)
 {
   unsigned ff;
   __asm__ ("pushf; pushl %1; popf; pushf; popl %0; popf"
-          : "=g" (ff)
-          : "g" (f));
+          : "=r" (ff)
+          : "r" (f));
   return (ff);
 }
 #  else
@@ -83,8 +83,8 @@ static __inline__ unsigned long long setflags(unsigned long f)
 {
   unsigned long ff;
   __asm__ ("pushf; pushq %1; popf; pushf; popq %0; popf"
-          : "=g" (ff)
-          : "g" (f));
+          : "=r" (ff)
+          : "r" (f));
   return (ff);
 }
 #  endif
@@ -229,6 +229,11 @@ struct auxentry { unsigned long type; union auxval value; };
 #  define WANT_AT_HWCAP(_) _(AT_HWCAP, u, hwcap)
 #endif
 
+#if defined(AT_HWCAP) && CPUFAM_ARM64
+#  define WANT_ANY 1
+#  define WANT_AT_HWCAP(_) _(AT_HWCAP, u, hwcap)
+#endif
+
 #if defined(AT_HWCAP2) && CPUFAM_ARMEL
 #  define WANT_ANY 1
 #  define WANT_AT_HWCAP2(_) _(AT_HWCAP2, u, hwcap2)
@@ -278,6 +283,12 @@ static unsigned hwcaps = 0;
        _(ARM_D32, "arm:d32")                                           \
        _(ARM_AES, "arm:aes")
 #endif
+#if CPUFAM_ARM64
+#  define WANTAUX(_)                                                   \
+       WANT_AT_HWCAP(_)
+#  define CAPMAP(_)                                                    \
+       _(ARM_AES, "arm:aes")
+#endif
 
 /* Build the bitmask for `hwcaps' from the `CAPMAP' list. */
 enum {
@@ -391,6 +402,9 @@ static void probe_hwcaps(void)
   if (probed.hwcap2 & HWCAP2_AES) hw |= HF_ARM_AES;
 #  endif
 #endif
+#if CPUFAM_ARM64
+  if (probed.hwcap & HWCAP_AES) hw |= HF_ARM_AES;
+#endif
 
   /* Store the bitmask of features we probed for everyone to see. */
   DISPATCH_STORE(hwcaps, hw);