diff options
-rw-r--r-- | include/cpuinfo.h | 11 | ||||
-rw-r--r-- | src/arm/uarch.c | 35 |
2 files changed, 45 insertions, 1 deletions
diff --git a/include/cpuinfo.h b/include/cpuinfo.h index ef4d719..b0e7f09 100644 --- a/include/cpuinfo.h +++ b/include/cpuinfo.h @@ -166,6 +166,8 @@ enum cpuinfo_vendor { cpuinfo_vendor_cavium = 12, /** Broadcom, Inc. Vendor of ARM processor microarchitectures. */ cpuinfo_vendor_broadcom = 13, + /** Applied Micro Circuits Corporation (APM). Vendor of ARM64 processor microarchitectures. */ + cpuinfo_vendor_apm = 14, /* Active vendors of embedded CPUs */ @@ -384,6 +386,10 @@ enum cpuinfo_uarch { cpuinfo_uarch_krait = 0x00400101, /** Qualcomm Kryo. */ cpuinfo_uarch_kryo = 0x00400102, + /** Qualcomm Falkor. */ + cpuinfo_uarch_falkor = 0x00400103, + /** Qualcomm Saphira. */ + cpuinfo_uarch_saphira = 0x00400104, /** Nvidia Denver. */ cpuinfo_uarch_denver = 0x00500100, @@ -412,6 +418,8 @@ enum cpuinfo_uarch { /** Cavium ThunderX. */ cpuinfo_uarch_thunderx = 0x00800100, + /** Cavium ThunderX2 (originally Broadcom Vulkan). */ + cpuinfo_uarch_thunderx2 = 0x00800200, /** Marvell PJ4. */ cpuinfo_uarch_pj4 = 0x00900100, @@ -420,6 +428,9 @@ enum cpuinfo_uarch { cpuinfo_uarch_brahma_b15 = 0x00A00100, /** Broadcom Brahma B53. */ cpuinfo_uarch_brahma_b53 = 0x00A00101, + + /** Applied Micro X-Gene. */ + cpuinfo_uarch_xgene = 0x00B00100, }; struct cpuinfo_processor { diff --git a/src/arm/uarch.c b/src/arm/uarch.c index 158e195..048a780 100644 --- a/src/arm/uarch.c +++ b/src/arm/uarch.c @@ -99,6 +99,13 @@ void cpuinfo_arm_decode_vendor_uarch( case 0x100: *uarch = cpuinfo_uarch_brahma_b53; break; +#if CPUINFO_ARCH_ARM64 && !defined(__ANDROID__) + case 0x516: + /* Broadcom Vulkan was sold to Cavium before it reached the market, so we identify it as Cavium ThunderX2 */ + *vendor = cpuinfo_vendor_cavium; + *uarch = cpuinfo_uarch_thunderx2; + break; +#endif default: cpuinfo_log_warning("unknown Broadcom CPU part 0x%03"PRIx32" ignored", midr_get_part(midr)); } @@ -107,9 +114,15 @@ void cpuinfo_arm_decode_vendor_uarch( case 'C': *vendor = cpuinfo_vendor_cavium; switch (midr_get_part(midr)) { - case 0x0A1: + case 0x0A0: /* ThunderX */ + case 0x0A1: /* ThunderX 88XX */ + case 0x0A2: /* ThunderX 81XX */ + case 0x0A3: /* ThunderX 83XX */ *uarch = cpuinfo_uarch_thunderx; break; + case 0x0AF: /* ThunderX2 99XX */ + *uarch = cpuinfo_uarch_thunderx2; + break; default: cpuinfo_log_warning("unknown Cavium CPU part 0x%03"PRIx32" ignored", midr_get_part(midr)); } @@ -147,6 +160,18 @@ void cpuinfo_arm_decode_vendor_uarch( cpuinfo_log_warning("unknown Nvidia CPU part 0x%03"PRIx32" ignored", midr_get_part(midr)); } break; +#if CPUINFO_ARCH_ARM64 && !defined(__ANDROID__) + case 'P': + *vendor = cpuinfo_vendor_apm; + switch (midr_get_part(midr)) { + case 0x000: + *uarch = cpuinfo_uarch_xgene; + break; + default: + cpuinfo_log_warning("unknown Applied Micro CPU part 0x%03"PRIx32" ignored", midr_get_part(midr)); + } + break; +#endif case 'Q': *vendor = cpuinfo_vendor_qualcomm; switch (midr_get_part(midr)) { @@ -205,6 +230,14 @@ void cpuinfo_arm_decode_vendor_uarch( *vendor = cpuinfo_vendor_arm; *uarch = cpuinfo_uarch_cortex_a55; break; +#if CPUINFO_ARCH_ARM64 && !defined(__ANDROID__) + case 0xC00: + *uarch = cpuinfo_uarch_falkor; + break; + case 0xC01: + *uarch = cpuinfo_uarch_saphira; + break; +#endif /* CPUINFO_ARCH_ARM64 && !defined(__ANDROID__) */ default: cpuinfo_log_warning("unknown Qualcomm CPU part 0x%03"PRIx32" ignored", midr_get_part(midr)); } |