@@ -270,8 +270,15 @@ static inline int cpu_is_pj4(void)
#define cpu_is_pj4() 0
#endif
-static inline int __attribute_const__ cpuid_feature_extract_field(u32 features,
- int field)
+
+static inline unsigned int __attribute_const__
+cpuid_feature_extract_unsigned_field(u32 features, int field)
+{
+ return (features >> field) & 15;
+}
+
+static inline int __attribute_const__
+cpuid_feature_extract_field(u32 features, int field)
{
int feature = (features >> field) & 15;
@@ -285,4 +292,7 @@ static inline int __attribute_const__ cpuid_feature_extract_field(u32 features,
#define cpuid_feature_extract(reg, field) \
cpuid_feature_extract_field(read_cpuid_ext(reg), field)
+#define cpuid_feature_extract_unsigned(reg, field) \
+ cpuid_feature_extract_unsigned_field(read_cpuid_ext(reg), field)
+
#endif
Some of the CPU feature bits have unsigned values and need to be treated accordingly to avoid errors. Add the new cpu feature helper for such cases. Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com> --- arch/arm/include/asm/cputype.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)