From 13aaea2fd73cdc8010394df7e4be40fa5d004e97 Mon Sep 17 00:00:00 2001 From: Zbigniew Bodek Date: Tue, 21 Jul 2015 12:15:00 +0000 Subject: [PATCH] Improve ARM64 CPU_MATCH Add a method to identify CPU based on RAW MIDR value. Obtained from: Semihalf Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D3117 --- sys/arm64/include/cpu.h | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/sys/arm64/include/cpu.h b/sys/arm64/include/cpu.h index b805ddd69b8..33e2af65da4 100644 --- a/sys/arm64/include/cpu.h +++ b/sys/arm64/include/cpu.h @@ -92,10 +92,17 @@ #define CPU_VAR_MASK (0xf << 20) #define CPU_REV_MASK (0xf << 0) -#define CPU_MATCH(mask, impl, part, var, rev) \ - (((mask) & PCPU_GET(midr)) == (CPU_IMPL_TO_MIDR((impl)) | \ - CPU_PART_TO_MIDR((part)) | CPU_VAR_TO_MIDR((var)) | \ - CPU_REV_TO_MIDR((rev)))) +#define CPU_ID_RAW(impl, part, var, rev) \ + (CPU_IMPL_TO_MIDR((impl)) | \ + CPU_PART_TO_MIDR((part)) | CPU_VAR_TO_MIDR((var)) | \ + CPU_REV_TO_MIDR((rev))) + +#define CPU_MATCH(mask, impl, part, var, rev) \ + (((mask) & PCPU_GET(midr)) == \ + ((mask) & CPU_ID_RAW((impl), (part), (var), (rev)))) + +#define CPU_MATCH_RAW(mask, devid) \ + (((mask) & PCPU_GET(midr)) == ((mask) & (devid))) extern char btext[]; extern char etext[];