From 7c28f7733231247e8b55e2e52f80d445deb8589c Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Tue, 14 Jan 2014 20:08:30 -0600 Subject: [PATCH] system: Improve AMD CPU detection * Several CPUID's were thrown into the Athlon 64 catch all. Add Sempron 64 and correct CPUIDs solves #9553 * Add better AMD A-Series detection --- headers/os/kernel/OS.h | 15 +++++++++++---- headers/private/shared/cpu_type.h | 11 +++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/headers/os/kernel/OS.h b/headers/os/kernel/OS.h index 0c7b0ae0ef..19d080dc0e 100644 --- a/headers/os/kernel/OS.h +++ b/headers/os/kernel/OS.h @@ -564,16 +564,21 @@ typedef enum cpu_types { B_CPU_AMD_ATHLON_64_MODEL_23 = 0x111f7, B_CPU_AMD_ATHLON_64_MODEL_24 = 0x111f8, B_CPU_AMD_ATHLON_64_MODEL_27 = 0x111fb, - B_CPU_AMD_ATHLON_64_MODEL_28 = 0x111fc, + + // Athlon 64's below here could be really + // Sempron 64's... however i've yet to find + // proof online B_CPU_AMD_ATHLON_64_MODEL_31 = 0x111ff, B_CPU_AMD_ATHLON_64_MODEL_35 = 0x211f3, B_CPU_AMD_ATHLON_64_MODEL_43 = 0x211fb, - B_CPU_AMD_ATHLON_64_MODEL_44 = 0x211fc, B_CPU_AMD_ATHLON_64_MODEL_47 = 0x211ff, B_CPU_AMD_ATHLON_64_MODEL_63 = 0x311ff, B_CPU_AMD_ATHLON_64_MODEL_79 = 0x411ff, B_CPU_AMD_ATHLON_64_MODEL_95 = 0x511ff, - B_CPU_AMD_ATHLON_64_MODEL_127 = 0x711ff, + + B_CPU_AMD_SEMPRON_64_MODEL_28 = 0x111fc, + B_CPU_AMD_SEMPRON_64_MODEL_44 = 0x211fc, + B_CPU_AMD_SEMPRON_64_MODEL_127 = 0x711ff, B_CPU_AMD_OPTERON_MODEL_5 = 0x11f5, B_CPU_AMD_OPTERON_MODEL_21 = 0x111f5, @@ -593,7 +598,9 @@ typedef enum cpu_types { B_CPU_AMD_PHENOM_II_MODEL_10 = 0x1011fa, // Family 12h - B_CPU_AMD_A_SERIES = 0x3011f1, + B_CPU_AMD_A_SERIES_MODEL_1 = 0x3011f1, + B_CPU_AMD_A_SERIES_MODEL_16 = 0x6111f0, + B_CPU_AMD_A_SERIES_MODEL_19 = 0x6111f3, // Family 14h B_CPU_AMD_C_SERIES = 0x5011f1, diff --git a/headers/private/shared/cpu_type.h b/headers/private/shared/cpu_type.h index d71983e14f..3317f95d44 100644 --- a/headers/private/shared/cpu_type.h +++ b/headers/private/shared/cpu_type.h @@ -385,6 +385,10 @@ get_cpu_model_string(const system_info *info) return "Athlon XP"; case B_CPU_AMD_DURON: return "Duron"; + case B_CPU_AMD_SEMPRON_64_MODEL_28: + case B_CPU_AMD_SEMPRON_64_MODEL_44: + case B_CPU_AMD_SEMPRON_64_MODEL_127: + return "Sempron 64"; case B_CPU_AMD_ATHLON_64_MODEL_3: case B_CPU_AMD_ATHLON_64_MODEL_4: case B_CPU_AMD_ATHLON_64_MODEL_7: @@ -397,16 +401,13 @@ get_cpu_model_string(const system_info *info) case B_CPU_AMD_ATHLON_64_MODEL_23: case B_CPU_AMD_ATHLON_64_MODEL_24: case B_CPU_AMD_ATHLON_64_MODEL_27: - case B_CPU_AMD_ATHLON_64_MODEL_28: case B_CPU_AMD_ATHLON_64_MODEL_31: case B_CPU_AMD_ATHLON_64_MODEL_35: case B_CPU_AMD_ATHLON_64_MODEL_43: - case B_CPU_AMD_ATHLON_64_MODEL_44: case B_CPU_AMD_ATHLON_64_MODEL_47: case B_CPU_AMD_ATHLON_64_MODEL_63: case B_CPU_AMD_ATHLON_64_MODEL_79: case B_CPU_AMD_ATHLON_64_MODEL_95: - case B_CPU_AMD_ATHLON_64_MODEL_127: return "Athlon 64"; case B_CPU_AMD_OPTERON_MODEL_5: case B_CPU_AMD_OPTERON_MODEL_21: @@ -428,7 +429,9 @@ get_cpu_model_string(const system_info *info) if (strcasestr(cpuidName, "Athlon") != NULL) return "Athlon II"; return "Phenom II"; - case B_CPU_AMD_A_SERIES: + case B_CPU_AMD_A_SERIES_MODEL_1: + case B_CPU_AMD_A_SERIES_MODEL_16: + case B_CPU_AMD_A_SERIES_MODEL_19: return "A-Series"; case B_CPU_AMD_C_SERIES: return "C-Series";