+#else
+ /* We can't use the auxiliary vector on Android due to
+ * permissions, so fall back to /proc/cpuinfo. We also
+ * hit this path if the target doesn't have sys/auxv.h.
+ */
+
+ char buf [512];
+ char *line;
+
+ FILE *file = fopen ("/proc/cpuinfo", "r");
+
+ if (file) {
+ while ((line = fgets (buf, 512, file))) {
+ if (!strncmp (line, "Processor", 9)) {
+ char *ver = strstr (line, "(v");
+
+ if (ver) {
+ if (ver [2] >= '5')
+ mono_hwcap_arm_is_v5 = TRUE;
+
+ if (ver [2] >= '6')
+ mono_hwcap_arm_is_v6 = TRUE;
+
+ if (ver [2] >= '7')
+ mono_hwcap_arm_is_v7 = TRUE;
+
+ /* TODO: Find a way to detect v7s. */
+ }
+
+ continue;
+ }
+
+ if (!strncmp (line, "Features", 8)) {
+ if (strstr (line, "thumb"))
+ mono_hwcap_arm_has_thumb = TRUE;
+
+ /* TODO: Find a way to detect Thumb 2. */
+
+ if (strstr (line, "vfp"))
+ mono_hwcap_arm_has_vfp = TRUE;
+
+ if (strstr (line, "vfpv3"))
+ mono_hwcap_arm_has_vfp3 = TRUE;
+
+ if (strstr (line, "vfpv3-d16"))
+ mono_hwcap_arm_has_vfp3_d16 = TRUE;
+
+ continue;
+ }
+ }
+
+ fclose (file);
+ }