diff options
author | zbb <zbb@FreeBSD.org> | 2015-07-21 12:15:00 +0000 |
---|---|---|
committer | zbb <zbb@FreeBSD.org> | 2015-07-21 12:15:00 +0000 |
commit | 4aefee1269a9b8702f23889219ed58bd3486ad73 (patch) | |
tree | 8689a751b17d0e921e6a8d521882d1f21f990f46 | |
parent | b875818639dd6879816aadbeb8a226214d1637fb (diff) | |
download | FreeBSD-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.h | 15 |
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[]; |