The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=124b5dbf5c09a17251b75f6b96c9ab7b218eee7f
commit 124b5dbf5c09a17251b75f6b96c9ab7b218eee7f Author: Andrew Turner <and...@freebsd.org> AuthorDate: 2025-06-23 12:28:36 +0000 Commit: Andrew Turner <and...@freebsd.org> CommitDate: 2025-06-23 12:55:24 +0000 arm64: Add more CPU MIDR values Found in Linux and https://github.com/arm-software/data Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D50726 --- sys/arm64/arm64/identcpu.c | 28 ++++++++++++++++++++++++++-- sys/arm64/include/cpu.h | 20 +++++++++++++++++++- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/sys/arm64/arm64/identcpu.c b/sys/arm64/arm64/identcpu.c index 72ef94531f54..123aeeb090dd 100644 --- a/sys/arm64/arm64/identcpu.c +++ b/sys/arm64/arm64/identcpu.c @@ -218,19 +218,28 @@ static const struct cpu_parts cpu_parts_arm[] = { { CPU_PART_CORTEX_A76AE, "Cortex-A76AE" }, { CPU_PART_CORTEX_A77, "Cortex-A77" }, { CPU_PART_CORTEX_A78, "Cortex-A78" }, + { CPU_PART_CORTEX_A78AE, "Cortex-A78AE" }, { CPU_PART_CORTEX_A78C, "Cortex-A78C" }, { CPU_PART_CORTEX_A510, "Cortex-A510" }, + { CPU_PART_CORTEX_A520, "Cortex-A520" }, { CPU_PART_CORTEX_A710, "Cortex-A710" }, { CPU_PART_CORTEX_A715, "Cortex-A715" }, + { CPU_PART_CORTEX_A720, "Cortex-A720" }, + { CPU_PART_CORTEX_A725, "Cortex-A725" }, + { CPU_PART_CORTEX_X925, "Cortex-A925" }, { CPU_PART_CORTEX_X1, "Cortex-X1" }, { CPU_PART_CORTEX_X1C, "Cortex-X1C" }, { CPU_PART_CORTEX_X2, "Cortex-X2" }, { CPU_PART_CORTEX_X3, "Cortex-X3" }, + { CPU_PART_CORTEX_X4, "Cortex-X4" }, { CPU_PART_NEOVERSE_E1, "Neoverse-E1" }, { CPU_PART_NEOVERSE_N1, "Neoverse-N1" }, { CPU_PART_NEOVERSE_N2, "Neoverse-N2" }, + { CPU_PART_NEOVERSE_N3, "Neoverse-N3" }, { CPU_PART_NEOVERSE_V1, "Neoverse-V1" }, { CPU_PART_NEOVERSE_V2, "Neoverse-V2" }, + { CPU_PART_NEOVERSE_V3, "Neoverse-V3" }, + { CPU_PART_NEOVERSE_V3AE, "Neoverse-V3AE" }, CPU_PART_NONE, }; @@ -241,12 +250,25 @@ static const struct cpu_parts cpu_parts_cavium[] = { CPU_PART_NONE, }; -/* APM / Ampere */ +/* APM (now Ampere) */ static const struct cpu_parts cpu_parts_apm[] = { { CPU_PART_EMAG8180, "eMAG 8180" }, CPU_PART_NONE, }; +/* Ampere */ +static const struct cpu_parts cpu_parts_ampere[] = { + { CPU_PART_AMPERE1, "AmpereOne AC03" }, + { CPU_PART_AMPERE1A, "AmpereOne AC04" }, + CPU_PART_NONE, +}; + +/* Microsoft */ +static const struct cpu_parts cpu_parts_microsoft[] = { + { CPU_PART_AZURE_COBALT_100, "Azure Cobalt 100" }, + CPU_PART_NONE, +}; + /* Qualcomm */ static const struct cpu_parts cpu_parts_qcom[] = { { CPU_PART_KRYO400_GOLD, "Kryo 400 Gold" }, @@ -280,7 +302,7 @@ static const struct cpu_parts cpu_parts_none[] = { * Implementers table. */ const struct cpu_implementers cpu_implementers[] = { - { CPU_IMPL_AMPERE, "Ampere", cpu_parts_none }, + { CPU_IMPL_AMPERE, "Ampere", cpu_parts_ampere }, { CPU_IMPL_APPLE, "Apple", cpu_parts_apple }, { CPU_IMPL_APM, "APM", cpu_parts_apm }, { CPU_IMPL_ARM, "ARM", cpu_parts_arm }, @@ -289,9 +311,11 @@ const struct cpu_implementers cpu_implementers[] = { { CPU_IMPL_DEC, "DEC", cpu_parts_none }, { CPU_IMPL_FREESCALE, "Freescale", cpu_parts_none }, { CPU_IMPL_FUJITSU, "Fujitsu", cpu_parts_none }, + { CPU_IMPL_HISILICON, "HiSilicon", cpu_parts_none }, { CPU_IMPL_INFINEON, "IFX", cpu_parts_none }, { CPU_IMPL_INTEL, "Intel", cpu_parts_none }, { CPU_IMPL_MARVELL, "Marvell", cpu_parts_none }, + { CPU_IMPL_MICROSOFT, "Microsoft", cpu_parts_microsoft }, { CPU_IMPL_NVIDIA, "NVIDIA", cpu_parts_none }, { CPU_IMPL_QUALCOMM, "Qualcomm", cpu_parts_qcom }, CPU_IMPLEMENTER_NONE, diff --git a/sys/arm64/include/cpu.h b/sys/arm64/include/cpu.h index 4ef01e9a47ed..935e3754bf25 100644 --- a/sys/arm64/include/cpu.h +++ b/sys/arm64/include/cpu.h @@ -75,6 +75,7 @@ #define CPU_IMPL_CAVIUM 0x43 #define CPU_IMPL_DEC 0x44 #define CPU_IMPL_FUJITSU 0x46 +#define CPU_IMPL_HISILICON 0x48 #define CPU_IMPL_INFINEON 0x49 #define CPU_IMPL_FREESCALE 0x4D #define CPU_IMPL_NVIDIA 0x4E @@ -84,6 +85,7 @@ #define CPU_IMPL_APPLE 0x61 #define CPU_IMPL_INTEL 0x69 #define CPU_IMPL_AMPERE 0xC0 +#define CPU_IMPL_MICROSOFT 0x6D /* ARM Part numbers */ #define CPU_PART_FOUNDATION 0xD00 @@ -103,6 +105,7 @@ #define CPU_PART_AEM_V8 0xD0F #define CPU_PART_NEOVERSE_V1 0xD40 #define CPU_PART_CORTEX_A78 0xD41 +#define CPU_PART_CORTEX_A78AE 0xD42 #define CPU_PART_CORTEX_A65AE 0xD43 #define CPU_PART_CORTEX_X1 0xD44 #define CPU_PART_CORTEX_A510 0xD46 @@ -115,6 +118,14 @@ #define CPU_PART_CORTEX_A715 0xD4D #define CPU_PART_CORTEX_X3 0xD4E #define CPU_PART_NEOVERSE_V2 0xD4F +#define CPU_PART_CORTEX_A520 0xD80 +#define CPU_PART_CORTEX_A720 0xD81 +#define CPU_PART_CORTEX_X4 0xD82 +#define CPU_PART_NEOVERSE_V3AE 0xD83 +#define CPU_PART_NEOVERSE_V3 0xD84 +#define CPU_PART_CORTEX_X925 0xD85 +#define CPU_PART_CORTEX_A725 0xD87 +#define CPU_PART_NEOVERSE_N3 0xD8E /* Cavium Part numbers */ #define CPU_PART_THUNDERX 0x0A1 @@ -127,9 +138,16 @@ #define CPU_REV_THUNDERX2_0 0x00 -/* APM / Ampere Part Number */ +/* APM (now Ampere) Part number */ #define CPU_PART_EMAG8180 0x000 +/* Ampere Part numbers */ +#define CPU_PART_AMPERE1 0xAC3 +#define CPU_PART_AMPERE1A 0xAC4 + +/* Microsoft Part numbers */ +#define CPU_PART_AZURE_COBALT_100 0xD49 + /* Qualcomm */ #define CPU_PART_KRYO400_GOLD 0x804 #define CPU_PART_KRYO400_SILVER 0x805