|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC PATCH v2 02/15] xen/arm: Add detection of Armv8.1-LSE atomic instructions
From: Ash Wilding <ash.j.wilding@xxxxxxxxx>
Use the new infrastructure for detecting CPU features in other ID
registers to detect the presence of Armv8.1-LSE atomic instructions,
as reported by ID_AA64ISAR0_EL1.Atomic.
While we're here, print detection of these instructions in setup.c's
processor_id().
Signed-off-by: Ash Wilding <ash.j.wilding@xxxxxxxxx>
---
xen/arch/arm/setup.c | 5 +++--
xen/include/asm-arm/cpufeature.h | 10 +++++++++-
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 5121f06fc5..138e1957c5 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -128,10 +128,11 @@ static void __init processor_id(void)
cpu_has_el2_32 ? "64+32" : cpu_has_el2_64 ? "64" : "No",
cpu_has_el1_32 ? "64+32" : cpu_has_el1_64 ? "64" : "No",
cpu_has_el0_32 ? "64+32" : cpu_has_el0_64 ? "64" : "No");
- printk(" Extensions:%s%s%s\n",
+ printk(" Extensions:%s%s%s%s\n",
cpu_has_fp ? " FloatingPoint" : "",
cpu_has_simd ? " AdvancedSIMD" : "",
- cpu_has_gicv3 ? " GICv3-SysReg" : "");
+ cpu_has_gicv3 ? " GICv3-SysReg" : "",
+ cpu_has_lse_atomics ? " LSE-Atomics" : "");
/* Warn user if we find unknown floating-point features */
if ( cpu_has_fp && (boot_cpu_feature(pfr64, fp) >= 2) )
diff --git a/xen/include/asm-arm/cpufeature.h b/xen/include/asm-arm/cpufeature.h
index f9281ea343..2366926e82 100644
--- a/xen/include/asm-arm/cpufeature.h
+++ b/xen/include/asm-arm/cpufeature.h
@@ -15,6 +15,7 @@
#define cpu_has_fp (boot_cpu_feature(pfr64, fp) < 8)
#define cpu_has_simd (boot_cpu_feature(pfr64, simd) < 8)
#define cpu_has_gicv3 (boot_cpu_feature(pfr64, gic) == 1)
+#define cpu_has_lse_atomics (boot_cpu_feature(isa64, atomic) == 2)
#endif
#define cpu_has_arm (boot_cpu_feature(pfr32, arm) == 1)
@@ -187,8 +188,15 @@ struct cpuinfo_arm {
};
} mm64;
- struct {
+ union {
uint64_t bits[2];
+ struct {
+ unsigned long __res0 : 20;
+ unsigned long atomic : 4;
+ unsigned long __res1 : 40;
+
+ unsigned long __res2 : 64;
+ };
} isa64;
#endif
--
2.24.3 (Apple Git-128)
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |