X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/a02a22d4b55d233ada2e030a44065f464b79f137..61bd904b61ef893246791746517ef7a38ed732db:/base/dispatch.c diff --git a/base/dispatch.c b/base/dispatch.c index 10ae4044..1b0ab2b1 100644 --- a/base/dispatch.c +++ b/base/dispatch.c @@ -224,6 +224,10 @@ struct auxentry { unsigned long type; union auxval value; }; * that the necessary entry types are defined. This is primarily ordered by * entry type to minimize duplication. */ +#if defined(AT_HWCAP) && CPUFAM_ARMEL +# define WANT_ANY 1 +# define WANT_AT_HWCAP(_) _(AT_HWCAP, u, hwcap) +#endif /* If we couldn't find any interesting entries then we can switch all of this * machinery off. Also do that if we have no means for atomic updates. @@ -255,6 +259,15 @@ static unsigned hwcaps = 0; * intends to satisfy from the auxiliary vector. Each entry contains a * feature name suffix, and the token name (for `check_env'). */ +#if CPUFAM_ARMEL +# define WANTAUX(_) \ + WANT_AT_HWCAP(_) +# define CAPMAP(_) \ + _(ARM_VFP, "arm:vfp") \ + _(ARM_NEON, "arm:neon") \ + _(ARM_V4, "arm:v4") \ + _(ARM_D32, "arm:d32") +#endif /* Build the bitmask for `hwcaps' from the `CAPMAP' list. */ enum { @@ -358,6 +371,12 @@ static void probe_hwcaps(void) /* Each CPU family now has to pick through what was found and stashed in * `probed', and set the appropriate flag bits in `hw'. */ +#if CPUFAM_ARMEL + if (probed.hwcap & HWCAP_VFPv3) hw |= HF_ARM_VFP; + if (probed.hwcap & HWCAP_NEON) hw |= HF_ARM_NEON; + if (probed.hwcap & HWCAP_VFPD32) hw |= HF_ARM_D32; + if (probed.hwcap & HWCAP_VFPv4) hw |= HF_ARM_V4; +#endif /* Store the bitmask of features we probed for everyone to see. */ DISPATCH_STORE(hwcaps, hw);