diff options
-rw-r--r-- | arch/arm64/include/asm/cpufeature.h | 14 |
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 | ||
186 | static inline int __attribute_const__ | 186 | static inline int __attribute_const__ |
187 | cpuid_feature_extract_field(u64 features, int field, bool sign) | 187 | cpuid_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 | |||
194 | static inline int __attribute_const__ | ||
195 | cpuid_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 | ||
194 | static inline s64 arm64_ftr_value(const struct arm64_ftr_bits *ftrp, u64 val) | 200 | static 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 | ||
199 | static inline bool id_aa64mmfr0_mixed_endian_el0(u64 mmfr0) | 205 | static inline bool id_aa64mmfr0_mixed_endian_el0(u64 mmfr0) |