aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/cpuinfo.h11
-rw-r--r--src/arm/uarch.c35
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));
}