getauxv and ARMv7 platform detection

Jeffrey Walton noloader@gmail.com
Tue May 21 02:52:00 GMT 2019


Hi Everyone,

I just noticed the following code was failing on ARMv7 platforms:

// For older machines, like GCC 4.3 on ARMv6
#ifndef HWCAP_ARMv7
# define HWCAP_ARMv7 (1 << 29)
#endif

inline bool CPU_QueryARMv7()
{
    if (getauxval(AT_HWCAP) & HWCAP_ARMv7) != 0)
        return true;
    return false;
}

Looking through Torvalds GitHub [1] I don't see a reliable define for
HWCAP_ARMv7 in hwcap.h.

I know I can fallback to NEON, but that misses earlier devices that
are ARMv7 but lacks NEON.

Searching is turning up a lot of spurious noise (for Aarch64/ARMv8),
and one hit for Mozilla working around the same problem [2].

My question is, how do we use getauxval to detect ARMv7 platforms?

Thanks in advance.

[1] https://github.com/torvalds/linux/blob/master/arch/arm/include/uapi/asm/hwcap.h
[2] https://hg.mozilla.org/releases/mozilla-aurora/rev/522951ff7046fd2bdf3916c973fbfde27be0af31



More information about the Libc-help mailing list