Fix cpu_aarch64_sysreg.cc

While I'm here, simplify it a bit and start shifting things over to C++
style, since this file is entirely standalone anyway.

Fixed: 484891679
Change-Id: I5ff8fd309852d99e664d4d1421003476f51d9e2f
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/89507
Auto-Submit: David Benjamin <davidben@google.com>
Commit-Queue: Lily Chen <chlily@google.com>
Reviewed-by: Lily Chen <chlily@google.com>
diff --git a/crypto/cpu_aarch64_sysreg.cc b/crypto/cpu_aarch64_sysreg.cc
index 0360a3d..770be1a 100644
--- a/crypto/cpu_aarch64_sysreg.cc
+++ b/crypto/cpu_aarch64_sysreg.cc
@@ -23,6 +23,10 @@
     (defined(ANDROID_BAREMETAL) || defined(OPENSSL_FREEBSD)) &&    \
     !defined(OPENSSL_NO_ASM)
 
+#include "./armv8_feature_parsing.h"
+
+BSSL_NAMESPACE_BEGIN
+
 #define ID_AA64PFR0_EL1_ADVSIMD 5
 
 #define READ_SYSREG(name)                \
@@ -32,12 +36,10 @@
     _r;                                  \
   })
 
-using namespace bssl;
-
-// We use the common get_id_field helper now, but need a signed variant
+// We use the common GetIDField helper now, but need a signed variant
 // for the NEON check using ID_AA64PFR0_EL1.
-static int get_signed_id_field(uint64_t reg, unsigned field) {
-  unsigned value = get_id_field(reg, field);
+static int GetSignedIDField(uint64_t reg, unsigned field) {
+  unsigned value = armcap::GetIDField(reg, field);
   if (value & (1 << (NBITS_ID_FIELD - 1))) {
     return (int)(value | (UINT64_MAX << NBITS_ID_FIELD));
   } else {
@@ -45,26 +47,20 @@
   }
 }
 
-static uint32_t read_armcap() {
-  uint32_t armcap = ARMV7_NEON;
-
+void OPENSSL_cpuid_setup() {
   uint64_t id_aa64pfr0_el1 = READ_SYSREG("id_aa64pfr0_el1");
-
-  if (get_signed_id_field(id_aa64pfr0_el1, ID_AA64PFR0_EL1_ADVSIMD) < 0) {
+  if (GetSignedIDField(id_aa64pfr0_el1, ID_AA64PFR0_EL1_ADVSIMD) < 0) {
     // If AdvSIMD ("NEON") is missing, don't report other features either.
     // This matches OpenSSL.
-    return 0;
+    return;
   }
 
-  uint64_t id_aa64isar0_el1 = READ_SYSREG("id_aa64isar0_el1");
-
   // Use the common parsing function to check all cryptographic features.
-  armcap |= armcap::ParseISAR0Flags(id_aa64isar0_el1);
-
-  return armcap;
+  uint64_t id_aa64isar0_el1 = READ_SYSREG("id_aa64isar0_el1");
+  OPENSSL_armcap_P |= ARMV7_NEON | armcap::ParseISAR0Flags(id_aa64isar0_el1);
 }
 
-void bssl::OPENSSL_cpuid_setup() { OPENSSL_armcap_P |= read_armcap(); }
+BSSL_NAMESPACE_END
 
 #endif  // OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP &&
         // (ANDROID_BAREMETAL || OPENSSL_FREEBSD)