Index | Thread | Search

From:
Brad Smith <brad@comstyle.com>
Subject:
Re: arm64: Add more HWCAP values
To:
tech@openbsd.org
Date:
Mon, 18 May 2026 23:34:04 -0400

Download raw body.

Thread
ping.

On 2026-05-03 12:09 a.m., Brad Smith wrote:
> More HWCAP values from Linux via FreeBSD.
>
> - arm64: add missing HWCAP and HWCAP2 values
>
>    Update the HWCAP and HWCAP2 values to align with Linux v6.13
>
>    94686b081fdb0c1bb0fc1dfeda14bd53f26ce7c5
>
> - arm64: Add more HWCAP values
>
>    3a960425df759a7bb8f946d23f035c63f3a5de7a
>
>
> Index: include/elf.h
> ===================================================================
> RCS file: /cvs/src/sys/arch/arm64/include/elf.h,v
> retrieving revision 1.1
> diff -u -p -u -p -r1.1 elf.h
> --- include/elf.h	14 Jul 2024 09:48:48 -0000	1.1
> +++ include/elf.h	27 Feb 2026 06:13:44 -0000
> @@ -38,84 +38,119 @@ extern unsigned long	hwcap, hwcap2;
>   #endif /* _KERNEL */
>   
>   /* 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
> -#define	HWCAP_ASIMDHP		0x00000400
> -#define	HWCAP_CPUID		0x00000800
> -#define	HWCAP_ASIMDRDM		0x00001000
> -#define	HWCAP_JSCVT		0x00002000
> -#define	HWCAP_FCMA		0x00004000
> -#define	HWCAP_LRCPC		0x00008000
> -#define	HWCAP_DCPOP		0x00010000
> -#define	HWCAP_SHA3		0x00020000
> -#define	HWCAP_SM3		0x00040000
> -#define	HWCAP_SM4		0x00080000
> -#define	HWCAP_ASIMDDP		0x00100000
> -#define	HWCAP_SHA512		0x00200000
> -#define	HWCAP_SVE		0x00400000
> -#define	HWCAP_ASIMDFHM		0x00800000
> -#define	HWCAP_DIT		0x01000000
> -#define	HWCAP_USCAT		0x02000000
> -#define	HWCAP_ILRCPC		0x04000000
> -#define	HWCAP_FLAGM		0x08000000
> -#define	HWCAP_SSBS		0x10000000
> -#define	HWCAP_SB		0x20000000
> -#define	HWCAP_PACA		0x40000000
> -#define	HWCAP_PACG		0x80000000
> +#define	HWCAP_FP		(1 << 0)
> +#define	HWCAP_ASIMD		(1 << 1)
> +#define	HWCAP_EVTSTRM		(1 << 2)
> +#define	HWCAP_AES		(1 << 3)
> +#define	HWCAP_PMULL		(1 << 4)
> +#define	HWCAP_SHA1		(1 << 5)
> +#define	HWCAP_SHA2		(1 << 6)
> +#define	HWCAP_CRC32		(1 << 7)
> +#define	HWCAP_ATOMICS		(1 << 8)
> +#define	HWCAP_FPHP		(1 << 9)
> +#define	HWCAP_ASIMDHP		(1 << 10)
> +#define	HWCAP_CPUID		(1 << 11)
> +#define	HWCAP_ASIMDRDM		(1 << 12)
> +#define	HWCAP_JSCVT		(1 << 13)
> +#define	HWCAP_FCMA		(1 << 14)
> +#define	HWCAP_LRCPC		(1 << 15)
> +#define	HWCAP_DCPOP		(1 << 16)
> +#define	HWCAP_SHA3		(1 << 17)
> +#define	HWCAP_SM3		(1 << 18)
> +#define	HWCAP_SM4		(1 << 19)
> +#define	HWCAP_ASIMDDP		(1 << 20)
> +#define	HWCAP_SHA512		(1 << 21)
> +#define	HWCAP_SVE		(1 << 22)
> +#define	HWCAP_ASIMDFHM		(1 << 23)
> +#define	HWCAP_DIT		(1 << 24)
> +#define	HWCAP_USCAT		(1 << 25)
> +#define	HWCAP_ILRCPC		(1 << 26)
> +#define	HWCAP_FLAGM		(1 << 27)
> +#define	HWCAP_SSBS		(1 << 28)
> +#define	HWCAP_SB		(1 << 29)
> +#define	HWCAP_PACA		(1 << 30)
> +#define	HWCAP_PACG		(1UL << 31)
> +#define	HWCAP_GCS		(1UL << 32)
> +#define	HWCAP_CMPBR		(1UL << 33)
> +#define	HWCAP_FPRCVT		(1UL << 34)
> +#define	HWCAP_F8MM8		(1UL << 35)
> +#define	HWCAP_F8MM4		(1UL << 36)
> +#define	HWCAP_SVE_F16MM		(1UL << 37)
> +#define	HWCAP_SVE_ELTPERM	(1UL << 38)
> +#define	HWCAP_SVE_AES2		(1UL << 39)
> +#define	HWCAP_SVE_BFSCALE	(1UL << 40)
> +#define	HWCAP_SVE2P2		(1UL << 41)
> +#define	HWCAP_SME2P2		(1UL << 42)
> +#define	HWCAP_SME_SBITPERM	(1UL << 43)
> +#define	HWCAP_SME_AES		(1UL << 44)
> +#define	HWCAP_SME_SFEXPA	(1UL << 45)
> +#define	HWCAP_SME_STMOP		(1UL << 46)
> +#define	HWCAP_SME_SMOP4		(1UL << 47)
>   
>   /* HWCAP2 */
> -#define	HWCAP2_DCPODP		0x0000000000000001ul
> -#define	HWCAP2_SVE2		0x0000000000000002ul
> -#define	HWCAP2_SVEAES		0x0000000000000004ul
> -#define	HWCAP2_SVEPMULL		0x0000000000000008ul
> -#define	HWCAP2_SVEBITPERM	0x0000000000000010ul
> -#define	HWCAP2_SVESHA3		0x0000000000000020ul
> -#define	HWCAP2_SVESM4		0x0000000000000040ul
> -#define	HWCAP2_FLAGM2		0x0000000000000080ul
> -#define	HWCAP2_FRINT		0x0000000000000100ul
> -#define	HWCAP2_SVEI8MM		0x0000000000000200ul
> -#define	HWCAP2_SVEF32MM		0x0000000000000400ul
> -#define	HWCAP2_SVEF64MM		0x0000000000000800ul
> -#define	HWCAP2_SVEBF16		0x0000000000001000ul
> -#define	HWCAP2_I8MM		0x0000000000002000ul
> -#define	HWCAP2_BF16		0x0000000000004000ul
> -#define	HWCAP2_DGH		0x0000000000008000ul
> -#define	HWCAP2_RNG		0x0000000000010000ul
> -#define	HWCAP2_BTI		0x0000000000020000ul
> -#define	HWCAP2_MTE		0x0000000000040000ul
> -#define	HWCAP2_ECV		0x0000000000080000ul
> -#define	HWCAP2_AFP		0x0000000000100000ul
> -#define	HWCAP2_RPRES		0x0000000000200000ul
> -#define	HWCAP2_MTE3		0x0000000000400000ul
> -#define	HWCAP2_SME		0x0000000000800000ul
> -#define	HWCAP2_SME_I16I64	0x0000000001000000ul
> -#define	HWCAP2_SME_F64F64	0x0000000002000000ul
> -#define	HWCAP2_SME_I8I32	0x0000000004000000ul
> -#define	HWCAP2_SME_F16F32	0x0000000008000000ul
> -#define	HWCAP2_SME_B16F32	0x0000000010000000ul
> -#define	HWCAP2_SME_F32F32	0x0000000020000000ul
> -#define	HWCAP2_SME_FA64		0x0000000040000000ul
> -#define	HWCAP2_WFXT		0x0000000080000000ul
> -#define	HWCAP2_EBF16		0x0000000100000000ul
> -#define	HWCAP2_SVE_EBF16	0x0000000200000000ul
> -#define	HWCAP2_CSSC		0x0000000400000000ul
> -#define	HWCAP2_RPRFM		0x0000000800000000ul
> -#define	HWCAP2_SVE2P1		0x0000001000000000ul
> -#define	HWCAP2_SME2		0x0000002000000000ul
> -#define	HWCAP2_SME2P1		0x0000004000000000ul
> -#define	HWCAP2_SME_I16I32	0x0000008000000000ul
> -#define	HWCAP2_SME_BI32I32	0x0000010000000000ul
> -#define	HWCAP2_SME_B16B16	0x0000020000000000ul
> -#define	HWCAP2_SME_F16F16	0x0000040000000000ul
> -#define	HWCAP2_MOPS		0x0000080000000000ul
> -#define	HWCAP2_HBC		0x0000100000000000ul
> +#define	HWCAP2_DCPODP		(1 << 0)
> +#define	HWCAP2_SVE2		(1 << 1)
> +#define	HWCAP2_SVEAES		(1 << 2)
> +#define	HWCAP2_SVEPMULL		(1 << 3)
> +#define	HWCAP2_SVEBITPERM	(1 << 4)
> +#define	HWCAP2_SVESHA3		(1 << 5)
> +#define	HWCAP2_SVESM4		(1 << 6)
> +#define	HWCAP2_FLAGM2		(1 << 7)
> +#define	HWCAP2_FRINT		(1 << 8)
> +#define	HWCAP2_SVEI8MM		(1 << 9)
> +#define	HWCAP2_SVEF32MM		(1 << 10)
> +#define	HWCAP2_SVEF64MM		(1 << 11)
> +#define	HWCAP2_SVEBF16		(1 << 12)
> +#define	HWCAP2_I8MM		(1 << 13)
> +#define	HWCAP2_BF16		(1 << 14)
> +#define	HWCAP2_DGH		(1 << 15)
> +#define	HWCAP2_RNG		(1 << 16)
> +#define	HWCAP2_BTI		(1 << 17)
> +#define	HWCAP2_MTE		(1 << 18)
> +#define	HWCAP2_ECV		(1 << 19)
> +#define	HWCAP2_AFP		(1 << 20)
> +#define	HWCAP2_RPRES		(1 << 21)
> +#define	HWCAP2_MTE3		(1 << 22)
> +#define	HWCAP2_SME		(1 << 23)
> +#define	HWCAP2_SME_I16I64	(1 << 24)
> +#define	HWCAP2_SME_F64F64	(1 << 25)
> +#define	HWCAP2_SME_I8I32	(1 << 26)
> +#define	HWCAP2_SME_F16F32	(1 << 27)
> +#define	HWCAP2_SME_B16F32	(1 << 28)
> +#define	HWCAP2_SME_F32F32	(1 << 29)
> +#define	HWCAP2_SME_FA64		(1 << 30)
> +#define	HWCAP2_WFXT		(1UL << 31)
> +#define	HWCAP2_EBF16		(1UL << 32)
> +#define	HWCAP2_SVE_EBF16	(1UL << 33)
> +#define	HWCAP2_CSSC		(1UL << 34)
> +#define	HWCAP2_RPRFM		(1UL << 35)
> +#define	HWCAP2_SVE2P1		(1UL << 36)
> +#define	HWCAP2_SME2		(1UL << 37)
> +#define	HWCAP2_SME2P1		(1UL << 38)
> +#define	HWCAP2_SME_I16I32	(1UL << 39)
> +#define	HWCAP2_SME_BI32I32	(1UL << 40)
> +#define	HWCAP2_SME_B16B16	(1UL << 41)
> +#define	HWCAP2_SME_F16F16	(1UL << 42)
> +#define	HWCAP2_MOPS		(1UL << 43)
> +#define	HWCAP2_HBC		(1UL << 44)
> +#define	HWCAP2_SVE_B16B16	(1UL << 45)
> +#define	HWCAP2_LRCPC3		(1UL << 46)
> +#define	HWCAP2_LSE128		(1UL << 47)
> +#define	HWCAP2_FPMR		(1UL << 48)
> +#define	HWCAP2_LUT		(1UL << 49)
> +#define	HWCAP2_FAMINMAX		(1UL << 50)
> +#define	HWCAP2_F8CVT		(1UL << 51)
> +#define	HWCAP2_F8FMA		(1UL << 52)
> +#define	HWCAP2_F8DP4		(1UL << 53)
> +#define	HWCAP2_F8DP2		(1UL << 54)
> +#define	HWCAP2_F8E4M3		(1UL << 55)
> +#define	HWCAP2_F8E5M2		(1UL << 56)
> +#define	HWCAP2_SME_LUTV2	(1UL << 57)
> +#define	HWCAP2_SME_F8F16	(1UL << 58)
> +#define	HWCAP2_SME_F8F32	(1UL << 59)
> +#define	HWCAP2_SME_SF8FMA	(1UL << 60)
> +#define	HWCAP2_SME_SF8DP4	(1UL << 61)
> +#define	HWCAP2_SME_SF8DP2	(1UL << 62)
> +#define	HWCAP2_POE		(1UL << 63)
>   
>   #endif /* !_MACHINE_ELF_H_ */