[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC PATCH v2 01/15] xen/arm: Support detection of CPU features in other ID registers
From: Ash Wilding <ash.j.wilding@xxxxxxxxx> The current Arm boot_cpu_feature64() and boot_cpu_feature32() macros are hardcoded to only detect features in ID_AA64PFR{0,1}_EL1 and ID_PFR{0,1} respectively. This patch replaces these macros with a new macro, boot_cpu_feature(), which takes an explicit ID register name as an argument. While we're here, cull cpu_feature64() and cpu_feature32() as they have no callers (we only ever use the boot CPU features), and update the printk() messages in setup.c to use the new macro. Signed-off-by: Ash Wilding <ash.j.wilding@xxxxxxxxx> --- xen/arch/arm/setup.c | 8 +++--- xen/include/asm-arm/cpufeature.h | 44 +++++++++++++++----------------- 2 files changed, 24 insertions(+), 28 deletions(-) diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c index 7fcff9af2a..5121f06fc5 100644 --- a/xen/arch/arm/setup.c +++ b/xen/arch/arm/setup.c @@ -134,16 +134,16 @@ static void __init processor_id(void) cpu_has_gicv3 ? " GICv3-SysReg" : ""); /* Warn user if we find unknown floating-point features */ - if ( cpu_has_fp && (boot_cpu_feature64(fp) >= 2) ) + if ( cpu_has_fp && (boot_cpu_feature(pfr64, fp) >= 2) ) printk(XENLOG_WARNING "WARNING: Unknown Floating-point ID:%d, " "this may result in corruption on the platform\n", - boot_cpu_feature64(fp)); + boot_cpu_feature(pfr64, fp)); /* Warn user if we find unknown AdvancedSIMD features */ - if ( cpu_has_simd && (boot_cpu_feature64(simd) >= 2) ) + if ( cpu_has_simd && (boot_cpu_feature(pfr64, simd) >= 2) ) printk(XENLOG_WARNING "WARNING: Unknown AdvancedSIMD ID:%d, " "this may result in corruption on the platform\n", - boot_cpu_feature64(simd)); + boot_cpu_feature(pfr64, simd)); printk(" Debug Features: %016"PRIx64" %016"PRIx64"\n", boot_cpu_data.dbg64.bits[0], boot_cpu_data.dbg64.bits[1]); diff --git a/xen/include/asm-arm/cpufeature.h b/xen/include/asm-arm/cpufeature.h index 10878ead8a..f9281ea343 100644 --- a/xen/include/asm-arm/cpufeature.h +++ b/xen/include/asm-arm/cpufeature.h @@ -1,39 +1,35 @@ #ifndef __ASM_ARM_CPUFEATURE_H #define __ASM_ARM_CPUFEATURE_H +#define boot_cpu_feature(idreg, feat) (boot_cpu_data.idreg.feat) + #ifdef CONFIG_ARM_64 -#define cpu_feature64(c, feat) ((c)->pfr64.feat) -#define boot_cpu_feature64(feat) (boot_cpu_data.pfr64.feat) - -#define cpu_has_el0_32 (boot_cpu_feature64(el0) == 2) -#define cpu_has_el0_64 (boot_cpu_feature64(el0) >= 1) -#define cpu_has_el1_32 (boot_cpu_feature64(el1) == 2) -#define cpu_has_el1_64 (boot_cpu_feature64(el1) >= 1) -#define cpu_has_el2_32 (boot_cpu_feature64(el2) == 2) -#define cpu_has_el2_64 (boot_cpu_feature64(el2) >= 1) -#define cpu_has_el3_32 (boot_cpu_feature64(el3) == 2) -#define cpu_has_el3_64 (boot_cpu_feature64(el3) >= 1) -#define cpu_has_fp (boot_cpu_feature64(fp) < 8) -#define cpu_has_simd (boot_cpu_feature64(simd) < 8) -#define cpu_has_gicv3 (boot_cpu_feature64(gic) == 1) +#define cpu_has_el0_32 (boot_cpu_feature(pfr64, el0) == 2) +#define cpu_has_el0_64 (boot_cpu_feature(pfr64, el0) >= 1) +#define cpu_has_el1_32 (boot_cpu_feature(pfr64, el1) == 2) +#define cpu_has_el1_64 (boot_cpu_feature(pfr64, el1) >= 1) +#define cpu_has_el2_32 (boot_cpu_feature(pfr64, el2) == 2) +#define cpu_has_el2_64 (boot_cpu_feature(pfr64, el2) >= 1) +#define cpu_has_el3_32 (boot_cpu_feature(pfr64, el3) == 2) +#define cpu_has_el3_64 (boot_cpu_feature(pfr64, el3) >= 1) +#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) #endif -#define cpu_feature32(c, feat) ((c)->pfr32.feat) -#define boot_cpu_feature32(feat) (boot_cpu_data.pfr32.feat) - -#define cpu_has_arm (boot_cpu_feature32(arm) == 1) -#define cpu_has_thumb (boot_cpu_feature32(thumb) >= 1) -#define cpu_has_thumb2 (boot_cpu_feature32(thumb) >= 3) -#define cpu_has_jazelle (boot_cpu_feature32(jazelle) > 0) -#define cpu_has_thumbee (boot_cpu_feature32(thumbee) == 1) +#define cpu_has_arm (boot_cpu_feature(pfr32, arm) == 1) +#define cpu_has_thumb (boot_cpu_feature(pfr32, thumb) >= 1) +#define cpu_has_thumb2 (boot_cpu_feature(pfr32, thumb) >= 3) +#define cpu_has_jazelle (boot_cpu_feature(pfr32, jazelle) > 0) +#define cpu_has_thumbee (boot_cpu_feature(pfr32, thumbee) == 1) #define cpu_has_aarch32 (cpu_has_arm || cpu_has_thumb) #ifdef CONFIG_ARM_32 -#define cpu_has_gentimer (boot_cpu_feature32(gentimer) == 1) +#define cpu_has_gentimer (boot_cpu_feature(pfr32, gentimer) == 1) #else #define cpu_has_gentimer (1) #endif -#define cpu_has_security (boot_cpu_feature32(security) > 0) +#define cpu_has_security (boot_cpu_feature(pfr32, security) > 0) #define ARM64_WORKAROUND_CLEAN_CACHE 0 #define ARM64_WORKAROUND_DEVICE_LOAD_ACQUIRE 1 -- 2.24.3 (Apple Git-128)
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |