@@ -135,6 +135,10 @@ static const struct arm64_ftr_bits ftr_id_aa64isar0[] = {
135
135
};
136
136
137
137
static const struct arm64_ftr_bits ftr_id_aa64isar1 [] = {
138
+ ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ISAR1_I8MM_SHIFT , 4 , 0 ),
139
+ ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ISAR1_DGH_SHIFT , 4 , 0 ),
140
+ ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ISAR1_BF16_SHIFT , 4 , 0 ),
141
+ ARM64_FTR_BITS (FTR_HIDDEN , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ISAR1_SPECRES_SHIFT , 4 , 0 ),
138
142
ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ISAR1_SB_SHIFT , 4 , 0 ),
139
143
ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ISAR1_FRINTTS_SHIFT , 4 , 0 ),
140
144
ARM64_FTR_BITS (FTR_VISIBLE_IF_IS_ENABLED (CONFIG_ARM64_PTR_AUTH ),
@@ -176,10 +180,18 @@ static const struct arm64_ftr_bits ftr_id_aa64pfr1[] = {
176
180
};
177
181
178
182
static const struct arm64_ftr_bits ftr_id_aa64zfr0 [] = {
183
+ ARM64_FTR_BITS (FTR_VISIBLE_IF_IS_ENABLED (CONFIG_ARM64_SVE ),
184
+ FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_F64MM_SHIFT , 4 , 0 ),
185
+ ARM64_FTR_BITS (FTR_VISIBLE_IF_IS_ENABLED (CONFIG_ARM64_SVE ),
186
+ FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_F32MM_SHIFT , 4 , 0 ),
187
+ ARM64_FTR_BITS (FTR_VISIBLE_IF_IS_ENABLED (CONFIG_ARM64_SVE ),
188
+ FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_I8MM_SHIFT , 4 , 0 ),
179
189
ARM64_FTR_BITS (FTR_VISIBLE_IF_IS_ENABLED (CONFIG_ARM64_SVE ),
180
190
FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_SM4_SHIFT , 4 , 0 ),
181
191
ARM64_FTR_BITS (FTR_VISIBLE_IF_IS_ENABLED (CONFIG_ARM64_SVE ),
182
192
FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_SHA3_SHIFT , 4 , 0 ),
193
+ ARM64_FTR_BITS (FTR_VISIBLE_IF_IS_ENABLED (CONFIG_ARM64_SVE ),
194
+ FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_BF16_SHIFT , 4 , 0 ),
183
195
ARM64_FTR_BITS (FTR_VISIBLE_IF_IS_ENABLED (CONFIG_ARM64_SVE ),
184
196
FTR_STRICT , FTR_LOWER_SAFE , ID_AA64ZFR0_BITPERM_SHIFT , 4 , 0 ),
185
197
ARM64_FTR_BITS (FTR_VISIBLE_IF_IS_ENABLED (CONFIG_ARM64_SVE ),
@@ -1651,15 +1663,22 @@ static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = {
1651
1663
HWCAP_CAP (SYS_ID_AA64ISAR1_EL1 , ID_AA64ISAR1_LRCPC_SHIFT , FTR_UNSIGNED , 2 , CAP_HWCAP , KERNEL_HWCAP_ILRCPC ),
1652
1664
HWCAP_CAP (SYS_ID_AA64ISAR1_EL1 , ID_AA64ISAR1_FRINTTS_SHIFT , FTR_UNSIGNED , 1 , CAP_HWCAP , KERNEL_HWCAP_FRINT ),
1653
1665
HWCAP_CAP (SYS_ID_AA64ISAR1_EL1 , ID_AA64ISAR1_SB_SHIFT , FTR_UNSIGNED , 1 , CAP_HWCAP , KERNEL_HWCAP_SB ),
1666
+ HWCAP_CAP (SYS_ID_AA64ISAR1_EL1 , ID_AA64ISAR1_BF16_SHIFT , FTR_UNSIGNED , 1 , CAP_HWCAP , KERNEL_HWCAP_BF16 ),
1667
+ HWCAP_CAP (SYS_ID_AA64ISAR1_EL1 , ID_AA64ISAR1_DGH_SHIFT , FTR_UNSIGNED , 1 , CAP_HWCAP , KERNEL_HWCAP_DGH ),
1668
+ HWCAP_CAP (SYS_ID_AA64ISAR1_EL1 , ID_AA64ISAR1_I8MM_SHIFT , FTR_UNSIGNED , 1 , CAP_HWCAP , KERNEL_HWCAP_I8MM ),
1654
1669
HWCAP_CAP (SYS_ID_AA64MMFR2_EL1 , ID_AA64MMFR2_AT_SHIFT , FTR_UNSIGNED , 1 , CAP_HWCAP , KERNEL_HWCAP_USCAT ),
1655
1670
#ifdef CONFIG_ARM64_SVE
1656
1671
HWCAP_CAP (SYS_ID_AA64PFR0_EL1 , ID_AA64PFR0_SVE_SHIFT , FTR_UNSIGNED , ID_AA64PFR0_SVE , CAP_HWCAP , KERNEL_HWCAP_SVE ),
1657
1672
HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_SVEVER_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_SVEVER_SVE2 , CAP_HWCAP , KERNEL_HWCAP_SVE2 ),
1658
1673
HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_AES_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_AES , CAP_HWCAP , KERNEL_HWCAP_SVEAES ),
1659
1674
HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_AES_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_AES_PMULL , CAP_HWCAP , KERNEL_HWCAP_SVEPMULL ),
1660
1675
HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_BITPERM_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_BITPERM , CAP_HWCAP , KERNEL_HWCAP_SVEBITPERM ),
1676
+ HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_BF16_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_BF16 , CAP_HWCAP , KERNEL_HWCAP_SVEBF16 ),
1661
1677
HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_SHA3_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_SHA3 , CAP_HWCAP , KERNEL_HWCAP_SVESHA3 ),
1662
1678
HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_SM4_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_SM4 , CAP_HWCAP , KERNEL_HWCAP_SVESM4 ),
1679
+ HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_I8MM_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_I8MM , CAP_HWCAP , KERNEL_HWCAP_SVEI8MM ),
1680
+ HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_F32MM_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_F32MM , CAP_HWCAP , KERNEL_HWCAP_SVEF32MM ),
1681
+ HWCAP_CAP (SYS_ID_AA64ZFR0_EL1 , ID_AA64ZFR0_F64MM_SHIFT , FTR_UNSIGNED , ID_AA64ZFR0_F64MM , CAP_HWCAP , KERNEL_HWCAP_SVEF64MM ),
1663
1682
#endif
1664
1683
HWCAP_CAP (SYS_ID_AA64PFR1_EL1 , ID_AA64PFR1_SSBS_SHIFT , FTR_UNSIGNED , ID_AA64PFR1_SSBS_PSTATE_INSNS , CAP_HWCAP , KERNEL_HWCAP_SSBS ),
1665
1684
#ifdef CONFIG_ARM64_PTR_AUTH
0 commit comments