Detect Broadcom Brahma cores
diff --git a/include/cpuinfo.h b/include/cpuinfo.h
index 0d10494..ef4d719 100644
--- a/include/cpuinfo.h
+++ b/include/cpuinfo.h
@@ -164,6 +164,8 @@
cpuinfo_vendor_via = 11,
/** Cavium, Inc. Vendor of ARM64 processor microarchitectures. */
cpuinfo_vendor_cavium = 12,
+ /** Broadcom, Inc. Vendor of ARM processor microarchitectures. */
+ cpuinfo_vendor_broadcom = 13,
/* Active vendors of embedded CPUs */
@@ -413,6 +415,11 @@
/** Marvell PJ4. */
cpuinfo_uarch_pj4 = 0x00900100,
+
+ /** Broadcom Brahma B15. */
+ cpuinfo_uarch_brahma_b15 = 0x00A00100,
+ /** Broadcom Brahma B53. */
+ cpuinfo_uarch_brahma_b53 = 0x00A00101,
};
struct cpuinfo_processor {
diff --git a/src/arm/uarch.c b/src/arm/uarch.c
index 89b84a3..158e195 100644
--- a/src/arm/uarch.c
+++ b/src/arm/uarch.c
@@ -90,6 +90,19 @@
}
}
break;
+ case 'B':
+ *vendor = cpuinfo_vendor_broadcom;
+ switch (midr_get_part(midr)) {
+ case 0x00F:
+ *uarch = cpuinfo_uarch_brahma_b15;
+ break;
+ case 0x100:
+ *uarch = cpuinfo_uarch_brahma_b53;
+ break;
+ default:
+ cpuinfo_log_warning("unknown Broadcom CPU part 0x%03"PRIx32" ignored", midr_get_part(midr));
+ }
+ break;
#if CPUINFO_ARCH_ARM64 && !defined(__ANDROID__)
case 'C':
*vendor = cpuinfo_vendor_cavium;
diff --git a/tools/cpu-info.c b/tools/cpu-info.c
index d1a5aad..806c617 100644
--- a/tools/cpu-info.c
+++ b/tools/cpu-info.c
@@ -34,6 +34,8 @@
return "VIA";
case cpuinfo_vendor_cavium:
return "Cavium";
+ case cpuinfo_vendor_broadcom:
+ return "Broadcom";
default:
return NULL;
}
@@ -183,6 +185,10 @@
return "ThunderX";
case cpuinfo_uarch_pj4:
return "PJ4";
+ case cpuinfo_uarch_brahma_b15:
+ return "Brahma B15";
+ case cpuinfo_uarch_brahma_b53:
+ return "Brahma B53";
default:
return NULL;
}