|
|
@@ -22,7 +22,23 @@
|
|
|
#include <asm/cpu.h>
|
|
|
#include <asm/cpufeature.h>
|
|
|
|
|
|
+static bool
|
|
|
+has_id_aa64pfr0_feature(const struct arm64_cpu_capabilities *entry)
|
|
|
+{
|
|
|
+ u64 val;
|
|
|
+
|
|
|
+ val = read_cpuid(id_aa64pfr0_el1);
|
|
|
+ return (val & entry->register_mask) == entry->register_value;
|
|
|
+}
|
|
|
+
|
|
|
static const struct arm64_cpu_capabilities arm64_features[] = {
|
|
|
+ {
|
|
|
+ .desc = "GIC system register CPU interface",
|
|
|
+ .capability = ARM64_HAS_SYSREG_GIC_CPUIF,
|
|
|
+ .matches = has_id_aa64pfr0_feature,
|
|
|
+ .register_mask = (0xf << 24),
|
|
|
+ .register_value = (1 << 24),
|
|
|
+ },
|
|
|
{},
|
|
|
};
|
|
|
|