arm64: update the set of HWCAP definitions

This is in sync with what is defined for Linux 5.8. Note that all bits
in HWCAP are exhausted, and HWCAP2 has been added.

This also revealed an error in some of the existing definitions. We are
missing HWCAP_ASIMDHP, and as a result a portion of the HWCAP values are
shifted right by one bit. This will be fixed in an upcoming change, but
the values being added now are compatible with what Linux defines.

Reviewed by:	emaste, markj, manu
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D26030
This commit is contained in:
Mitchell Horne 2020-09-03 17:07:58 +00:00
parent 2afeaad315
commit 7ea40e1dbf
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=365304

View File

@ -92,33 +92,58 @@ __ElfType(Auxinfo);
#endif
/* HWCAP */
#define HWCAP_FP 0x00000001
#define HWCAP_ASIMD 0x00000002
#define HWCAP_EVTSTRM 0x00000004
#define HWCAP_AES 0x00000008
#define HWCAP_PMULL 0x00000010
#define HWCAP_SHA1 0x00000020
#define HWCAP_SHA2 0x00000040
#define HWCAP_CRC32 0x00000080
#define HWCAP_ATOMICS 0x00000100
#define HWCAP_FPHP 0x00000200
/* XXX: The following bits don't match the Linux definitions */
#define HWCAP_CPUID 0x00000400
#define HWCAP_ASIMDRDM 0x00000800
#define HWCAP_JSCVT 0x00001000
#define HWCAP_FCMA 0x00002000
#define HWCAP_LRCPC 0x00004000
#define HWCAP_DCPOP 0x00008000
#define HWCAP_SHA3 0x00010000
#define HWCAP_SM3 0x00020000
#define HWCAP_SM4 0x00040000
#define HWCAP_ASIMDDP 0x00080000
#define HWCAP_SHA512 0x00100000
#define HWCAP_SVE 0x00200000
#define HWCAP_ASIMDFHM 0x00400000
#define HWCAP_DIT 0x00800000
#define HWCAP_USCAT 0x01000000
#define HWCAP_ILRCPC 0x02000000
#define HWCAP_FLAGM 0x04000000
/* XXX: end of incorrect definitions */
#define HWCAP_SSBS 0x10000000
#define HWCAP_SB 0x20000000
#define HWCAP_PACA 0x40000000
#define HWCAP_PACG 0x80000000
#define HWCAP_FP 0x00000001
#define HWCAP_ASIMD 0x00000002
#define HWCAP_EVTSTRM 0x00000004
#define HWCAP_AES 0x00000008
#define HWCAP_PMULL 0x00000010
#define HWCAP_SHA1 0x00000020
#define HWCAP_SHA2 0x00000040
#define HWCAP_CRC32 0x00000080
#define HWCAP_ATOMICS 0x00000100
#define HWCAP_FPHP 0x00000200
#define HWCAP_CPUID 0x00000400
#define HWCAP_ASIMDRDM 0x00000800
#define HWCAP_JSCVT 0x00001000
#define HWCAP_FCMA 0x00002000
#define HWCAP_LRCPC 0x00004000
#define HWCAP_DCPOP 0x00008000
#define HWCAP_SHA3 0x00010000
#define HWCAP_SM3 0x00020000
#define HWCAP_SM4 0x00040000
#define HWCAP_ASIMDDP 0x00080000
#define HWCAP_SHA512 0x00100000
#define HWCAP_SVE 0x00200000
#define HWCAP_ASIMDFHM 0x00400000
#define HWCAP_DIT 0x00800000
#define HWCAP_USCAT 0x01000000
#define HWCAP_ILRCPC 0x02000000
#define HWCAP_FLAGM 0x04000000
/* HWCAP2 */
#define HWCAP2_DCPODP 0x00000001
#define HWCAP2_SVE2 0x00000002
#define HWCAP2_SVEAES 0x00000004
#define HWCAP2_SVEPMULL 0x00000008
#define HWCAP2_SVEBITPERM 0x00000010
#define HWCAP2_SVESHA3 0x00000020
#define HWCAP2_SVESM4 0x00000040
#define HWCAP2_FLAGM2 0x00000080
#define HWCAP2_FRINT 0x00000100
#define HWCAP2_SVEI8MM 0x00000200
#define HWCAP2_SVEF32MM 0x00000400
#define HWCAP2_SVEF64MM 0x00000800
#define HWCAP2_SVEBF16 0x00001000
#define HWCAP2_I8MM 0x00002000
#define HWCAP2_BF16 0x00004000
#define HWCAP2_DGH 0x00008000
#define HWCAP2_RNG 0x00010000
#define HWCAP2_BTI 0x00020000
#endif /* !_MACHINE_ELF_H_ */