summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzbb <zbb@FreeBSD.org>2015-07-21 12:15:00 +0000
committerzbb <zbb@FreeBSD.org>2015-07-21 12:15:00 +0000
commit4aefee1269a9b8702f23889219ed58bd3486ad73 (patch)
tree8689a751b17d0e921e6a8d521882d1f21f990f46
parentb875818639dd6879816aadbeb8a226214d1637fb (diff)
downloadFreeBSD-src-4aefee1269a9b8702f23889219ed58bd3486ad73.zip
FreeBSD-src-4aefee1269a9b8702f23889219ed58bd3486ad73.tar.gz
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
-rw-r--r--sys/arm64/include/cpu.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/sys/arm64/include/cpu.h b/sys/arm64/include/cpu.h
index b805ddd..33e2af6 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[];
OpenPOWER on IntegriCloud