Detect ARMV8 on 32-bit mode by using ARMV7 kernels.
authorZhang Xianyi <traits.zhang@gmail.com>
Thu, 28 Jan 2016 17:30:26 +0000 (17:30 +0000)
committerZhang Xianyi <traits.zhang@gmail.com>
Thu, 28 Jan 2016 17:30:26 +0000 (17:30 +0000)
cpuid_arm.c

index 6485003..fe462c0 100644 (file)
@@ -115,6 +115,9 @@ int detect(void)
          if (strstr(p, "0xc0f")) {
            return CPU_CORTEXA15;
          }
+         if (strstr(p, "0xd07")) {
+           return CPU_ARMV7;  //ARMV8 on 32-bit
+         }
 
        }
 
@@ -158,6 +161,27 @@ int detect(void)
 
 
        }
+
+       p = (char *) NULL ;
+       infile = fopen("/proc/cpuinfo", "r");
+
+       while (fgets(buffer, sizeof(buffer), infile))
+       {
+
+               if ((!strncmp("CPU architecture", buffer, 16)))
+               {
+                       p = strchr(buffer, ':') + 2;
+                       break;
+               }
+       }
+       fclose(infile);
+       if(p != NULL) {
+         if (strstr(p, "8")) {
+           return CPU_ARMV7;  //ARMV8 on 32-bit
+         }
+
+       }
+
 #endif
 
        return CPU_UNKNOWN;