Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
146 changes: 126 additions & 20 deletions src/Utils/ARMPartDecoder.vala
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
*/

public class About.ARMPartDecoder {
// Vala port of https://github.com/util-linux/util-linux/blob/2da5c904e18fdcffd2b252d641e6f76374c7b406/sys-utils/lscpu-arm.c
struct ARMPart {
int id;
string name;
Expand Down Expand Up @@ -62,41 +63,75 @@ public class About.ARMPartDecoder {
{ 0xc27, "Cortex-M7" },
{ 0xc60, "Cortex-M0+" },
{ 0xd01, "Cortex-A32" },
{ 0xd02, "Cortex-A34" },
{ 0xd03, "Cortex-A53" },
{ 0xd04, "Cortex-A35" },
{ 0xd05, "Cortex-A55" },
{ 0xd06, "Cortex-A65" },
{ 0xd07, "Cortex-A57" },
{ 0xd08, "Cortex-A72" },
{ 0xd09, "Cortex-A73" },
{ 0xd0a, "Cortex-A75" },
{ 0xd0b, "Cortex-A76" },
{ 0xd0c, "Neoverse-N1" },
{ 0xd0d, "Cortex-A77" },
{ 0xd0e, "Cortex-A76AE" },
{ 0xd13, "Cortex-R52" },
{ 0xd15, "Cortex-R82" },
{ 0xd16, "Cortex-R52+" },
{ 0xd20, "Cortex-M23" },
{ 0xd21, "Cortex-M33" },
{ 0xd4a, "Neoverse-E1" }
{ 0xd22, "Cortex-M55" },
{ 0xd23, "Cortex-M85" },
{ 0xd40, "Neoverse-V1" },
{ 0xd41, "Cortex-A78" },
{ 0xd42, "Cortex-A78AE" },
{ 0xd43, "Cortex-A65AE" },
{ 0xd44, "Cortex-X1" },
{ 0xd46, "Cortex-A510" },
{ 0xd47, "Cortex-A710" },
{ 0xd48, "Cortex-X2" },
{ 0xd49, "Neoverse-N2" },
{ 0xd4a, "Neoverse-E1" },
{ 0xd4b, "Cortex-A78C" },
{ 0xd4c, "Cortex-X1C" },
{ 0xd4d, "Cortex-A715" },
{ 0xd4e, "Cortex-X3" },
{ 0xd4f, "Neoverse-V2" },
{ 0xd80, "Cortex-A520" },
{ 0xd81, "Cortex-A720" },
{ 0xd82, "Cortex-X4" },
};

const ARMPart BROADCOM_PARTS[] = {
{ 0x0f, "Brahma B15" },
{ 0x100, "Brahma B53" }
{ 0x0f, "Brahma-B15" },
{ 0x100, "Brahma-B53" },
{ 0x516, "ThunderX2" },
};

const ARMPart DEC_PARTS[] = {
{ 0xa10, "SA110" },
{ 0xa11, "SA1100" }
{ 0xa11, "SA1100" },
};

const ARMPart CAVIUM_PARTS[] = {
{ 0x0a0, "ThunderX" },
{ 0x0a1, "ThunderX 88XX" },
{ 0x0a2, "ThunderX 81XX" },
{ 0x0a3, "ThunderX 83XX" },
{ 0x0af, "ThunderX2 99xx" }
{ 0x0a1, "ThunderX-88XX" },
{ 0x0a2, "ThunderX-81XX" },
{ 0x0a3, "ThunderX-83XX" },
{ 0x0af, "ThunderX2-99xx" },
{ 0x0b0, "OcteonTX2" },
{ 0x0b1, "OcteonTX2-98XX" },
{ 0x0b2, "OcteonTX2-96XX" },
{ 0x0b3, "OcteonTX2-95XX" },
{ 0x0b4, "OcteonTX2-95XXN" },
{ 0x0b5, "OcteonTX2-95XXMM" },
{ 0x0b6, "OcteonTX2-95XXO" },
{ 0x0b8, "ThunderX3-T110" },
};

const ARMPart APM_PARTS[] = {
{ 0x000, "X-Gene" }
{ 0x000, "X-Gene" },
};

const ARMPart QUALCOMM_PARTS[] = {
Expand All @@ -107,30 +142,77 @@ public class About.ARMPartDecoder {
{ 0x201, "Kryo" },
{ 0x205, "Kryo" },
{ 0x211, "Kryo" },
{ 0x800, "Falkor V1/Kryo" },
{ 0x801, "Kryo V2" },
{ 0x800, "Falkor-V1/Kryo" },
{ 0x801, "Kryo-V2" },
{ 0x802, "Kryo-3XX-Gold" },
{ 0x803, "Kryo-3XX-Silver" },
{ 0x804, "Kryo-4XX-Gold" },
{ 0x805, "Kryo-4XX-Silver" },
{ 0xc00, "Falkor" },
{ 0xc01, "Saphira" }
{ 0xc01, "Saphira" },
};

const ARMPart SAMSUNG_PARTS[] = {
{ 0x001, "exynos-m1" }
{ 0x001, "exynos-m1" },
{ 0x002, "exynos-m3" },
{ 0x003, "exynos-m4" },
{ 0x004, "exynos-m5" },
};

const ARMPart NVIDIA_PARTS[] = {
{ 0x000, "Denver" },
{ 0x003, "Denver 2" }
{ 0x003, "Denver 2" },
{ 0x004, "Carmel" },
};

const ARMPart MARVELL_PARTS[] = {
{ 0x131, "Feroceon 88FR131" },
{ 0x131, "Feroceon-88FR131" },
{ 0x581, "PJ4/PJ4b" },
{ 0x584, "PJ4B-MP" }
{ 0x584, "PJ4B-MP" },
};

const ARMPart APPLE_PARTS[] = {
{ 0x000, "Swift" },
{ 0x001, "Cyclone" },
{ 0x002, "Typhoon" },
{ 0x003, "Typhoon/Capri" },
{ 0x004, "Twister" },
{ 0x005, "Twister/Elba/Malta" },
{ 0x006, "Hurricane" },
{ 0x007, "Hurricane/Myst" },
{ 0x008, "Monsoon" },
{ 0x009, "Mistral" },
{ 0x00b, "Vortex" },
{ 0x00c, "Tempest" },
{ 0x00f, "Tempest-M9" },
{ 0x010, "Vortex/Aruba" },
{ 0x011, "Tempest/Aruba" },
{ 0x012, "Lightning" },
{ 0x013, "Thunder" },
{ 0x020, "Icestorm-A14" },
{ 0x021, "Firestorm-A14" },
{ 0x022, "Icestorm-M1" },
{ 0x023, "Firestorm-M1" },
{ 0x024, "Icestorm-M1-Pro" },
{ 0x025, "Firestorm-M1-Pro" },
{ 0x026, "Thunder-M10" },
{ 0x028, "Icestorm-M1-Max" },
{ 0x029, "Firestorm-M1-Max" },
{ 0x030, "Blizzard-A15" },
{ 0x031, "Avalanche-A15" },
{ 0x032, "Blizzard-M2" },
{ 0x033, "Avalanche-M2" },
{ 0x034, "Blizzard-M2-Pro" },
{ 0x035, "Avalanche-M2-Pro" },
{ 0x036, "Sawtooth-A16" },
{ 0x037, "Everest-A16" },
{ 0x038, "Blizzard-M2-Max" },
{ 0x039, "Avalanche-M2-Max" },
};

const ARMPart FARADAY_PARTS[] = {
{ 0x526, "FA526" },
{ 0x626, "FA626" }
{ 0x626, "FA626" },
};

const ARMPart INTEL_PARTS[] = {
Expand All @@ -154,26 +236,50 @@ public class About.ARMPartDecoder {
{ 0x688, "PXA30x" },
{ 0x689, "PXA31x" },
{ 0xb11, "SA1110" },
{ 0xc12, "IPX1200" }
{ 0xc12, "IPX1200" },
};

const ARMPart FUJITSU_PARTS[] = {
{ 0x001, "A64FX" },
};

const ARMPart HISILICON_PARTS[] = {
{ 0xd01, "Kunpeng-920" } /* aka tsv110 */
{ 0xd01, "Kunpeng-920" }, /* aka tsv110 */
{ 0xd40, "Cortex-A76" }, /* HiSilicon uses this ID though advertises A76 */
};

const ARMPart AMPERE_PARTS[] = {
{ 0xac3, "Ampere-1" },
{ 0xac4, "Ampere-1a" },
};

const ARMPart PHYTIUM_PARTS[] = {
{ 0x303, "FTC310" },
{ 0x660, "FTC660" },
{ 0x661, "FTC661" },
{ 0x662, "FTC662" },
{ 0x663, "FTC663" },
{ 0x664, "FTC664" },
{ 0x862, "FTC862" },
};

const ARMImplementer ARM_IMPLEMENTERS[] = {
{ 0x41, ARM_PARTS, "ARM" },
{ 0x42, BROADCOM_PARTS, "Broadcom" },
{ 0x43, CAVIUM_PARTS, "Cavium" },
{ 0x44, DEC_PARTS, "DEC" },
{ 0x46, FUJITSU_PARTS, "FUJITSU" },
{ 0x48, HISILICON_PARTS, "HiSilicon" },
{ 0x4e, NVIDIA_PARTS, "Nvidia" },
{ 0x4e, NVIDIA_PARTS, "NVIDIA" },
{ 0x50, APM_PARTS, "APM" },
{ 0x51, QUALCOMM_PARTS, "Qualcomm" },
{ 0x53, SAMSUNG_PARTS, "Samsung" },
{ 0x56, MARVELL_PARTS, "Marvell" },
{ 0x61, APPLE_PARTS, "Apple" },
{ 0x66, FARADAY_PARTS, "Faraday" },
{ 0x69, INTEL_PARTS, "Intel" },
{ 0x70, PHYTIUM_PARTS, "Phytium" },
{ 0xc0, AMPERE_PARTS, "Ampere" },
};

public static string? decode_arm_model (string cpu_implementer, string cpu_part) {
Expand Down