aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm64/include/asm/cpufeature.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h
index 4ce82ed3e7c3..05310ad8c5ab 100644
--- a/arch/arm64/include/asm/cpufeature.h
+++ b/arch/arm64/include/asm/cpufeature.h
@@ -184,16 +184,22 @@ static inline u64 arm64_ftr_reg_user_value(const struct arm64_ftr_reg *reg)
184} 184}
185 185
186static inline int __attribute_const__ 186static inline int __attribute_const__
187cpuid_feature_extract_field(u64 features, int field, bool sign) 187cpuid_feature_extract_field_width(u64 features, int field, int width, bool sign)
188{ 188{
189 return (sign) ? 189 return (sign) ?
190 cpuid_feature_extract_signed_field(features, field) : 190 cpuid_feature_extract_signed_field_width(features, field, width) :
191 cpuid_feature_extract_unsigned_field(features, field); 191 cpuid_feature_extract_unsigned_field_width(features, field, width);
192}
193
194static inline int __attribute_const__
195cpuid_feature_extract_field(u64 features, int field, bool sign)
196{
197 return cpuid_feature_extract_field_width(features, field, 4, sign);
192} 198}
193 199
194static inline s64 arm64_ftr_value(const struct arm64_ftr_bits *ftrp, u64 val) 200static inline s64 arm64_ftr_value(const struct arm64_ftr_bits *ftrp, u64 val)
195{ 201{
196 return (s64)cpuid_feature_extract_field(val, ftrp->shift, ftrp->sign); 202 return (s64)cpuid_feature_extract_field_width(val, ftrp->shift, ftrp->width, ftrp->sign);
197} 203}
198 204
199static inline bool id_aa64mmfr0_mixed_endian_el0(u64 mmfr0) 205static inline bool id_aa64mmfr0_mixed_endian_el0(u64 mmfr0)