Ticket #1979: haiku_cputype_ticket1979.diff

File haiku_cputype_ticket1979.diff, 8.3 KB (added by v, 16 years ago)

Not compiled, not tested patch that might resolve the problem

  • headers/os/kernel/OS.h

     
    427427   
    428428    /* Updated according to Intel(R) Processor Identification and
    429429     * the  CPUID instruction (Table 4)
    430      * AP-485 Intel - 24161828.pdf
     430     * AP-485 Intel - 24161832.pdf
    431431     */
    432     B_CPU_INTEL_x86                     = 0x1000,
    433     B_CPU_INTEL_PENTIUM                 = 0x1051,
     432    B_CPU_INTEL_x86                     = 0x100000,
     433    B_CPU_INTEL_PENTIUM                 = 0x100501,
    434434    B_CPU_INTEL_PENTIUM75,
    435435    B_CPU_INTEL_PENTIUM_486_OVERDRIVE,
    436436    B_CPU_INTEL_PENTIUM_MMX,
    437437    B_CPU_INTEL_PENTIUM_MMX_MODEL_4     = B_CPU_INTEL_PENTIUM_MMX,
    438     B_CPU_INTEL_PENTIUM_MMX_MODEL_8     = 0x1058,
     438    B_CPU_INTEL_PENTIUM_MMX_MODEL_8     = 0x100508,
    439439    B_CPU_INTEL_PENTIUM75_486_OVERDRIVE,
    440     B_CPU_INTEL_PENTIUM_PRO             = 0x1061,
    441     B_CPU_INTEL_PENTIUM_II              = 0x1063,
    442     B_CPU_INTEL_PENTIUM_II_MODEL_3      = 0x1063,
    443     B_CPU_INTEL_PENTIUM_II_MODEL_5      = 0x1065,
    444     B_CPU_INTEL_CELERON                 = 0x1066,
    445     B_CPU_INTEL_PENTIUM_III             = 0x1067,
    446     B_CPU_INTEL_PENTIUM_III_MODEL_8     = 0x1068,
    447     B_CPU_INTEL_PENTIUM_M               = 0x1069,
    448     B_CPU_INTEL_PENTIUM_III_XEON        = 0x106a,
    449     B_CPU_INTEL_PENTIUM_III_MODEL_11    = 0x106b,
    450     B_CPU_INTEL_PENTIUM_M_MODEL_13      = 0x106d, /* Dothan */
     440    B_CPU_INTEL_PENTIUM_PRO             = 0x100601,
     441    B_CPU_INTEL_PENTIUM_II              = 0x100603,
     442    B_CPU_INTEL_PENTIUM_II_MODEL_3      = 0x100603,
     443    B_CPU_INTEL_PENTIUM_II_MODEL_5      = 0x100605,
     444    B_CPU_INTEL_CELERON                 = 0x100606,
     445    B_CPU_INTEL_CELERON_MODEL_22        = 0x101606,
     446    B_CPU_INTEL_PENTIUM_III             = 0x100607,
     447    B_CPU_INTEL_PENTIUM_III_MODEL_8     = 0x100608,
     448    B_CPU_INTEL_PENTIUM_M               = 0x100609,
     449    B_CPU_INTEL_PENTIUM_III_XEON        = 0x10060a,
     450    B_CPU_INTEL_PENTIUM_III_MODEL_11    = 0x10060b,
     451    B_CPU_INTEL_PENTIUM_M_MODEL_13      = 0x10060d, /* Dothan */
    451452    B_CPU_INTEL_PENTIUM_CORE,
    452453    B_CPU_INTEL_PENTIUM_CORE_2,
    453     B_CPU_INTEL_PENTIUM_IV              = 0x10f0,
     454    B_CPU_INTEL_PENTIUM_CORE_2_EXTREME  = 0x101607, /* Core 2 Extreme or Xeon
     455                                                       model 23 on 45 nm */
     456    B_CPU_INTEL_PENTIUM_IV              = 0x100f00,
    454457    B_CPU_INTEL_PENTIUM_IV_MODEL_1,
    455458    B_CPU_INTEL_PENTIUM_IV_MODEL_2,
    456459    B_CPU_INTEL_PENTIUM_IV_MODEL_3,
    457460    B_CPU_INTEL_PENTIUM_IV_MODEL_4,
    458     B_CPU_INTEL_PENTIUM_CORE_2_EXTREME  = 0x1467,
    459461
    460462    /* AMD */
    461463   
     
    463465     * (Table 3)
    464466     * 20734.pdf
    465467     */
    466     B_CPU_AMD_x86                       = 0x1100,
    467     B_CPU_AMD_K5_MODEL_0                = 0x1150,
     468    B_CPU_AMD_x86                       = 0x110000,
     469    B_CPU_AMD_K5_MODEL_0                = 0x110500,
    468470    B_CPU_AMD_K5_MODEL_1,
    469471    B_CPU_AMD_K5_MODEL_2,
    470472    B_CPU_AMD_K5_MODEL_3,
    471     B_CPU_AMD_K6_MODEL_6                = 0x1156,
    472     B_CPU_AMD_K6_MODEL_7                = 0x1157,
    473     B_CPU_AMD_K6_MODEL_8                = 0x1158,
    474     B_CPU_AMD_K6_2                      = 0x1158,
    475     B_CPU_AMD_K6_MODEL_9                = 0x1159,
    476     B_CPU_AMD_K6_III                    = 0x1159,
    477     B_CPU_AMD_K6_III_MODEL_13           = 0x115d,
     473    B_CPU_AMD_K6_MODEL_6                = 0x110506,
     474    B_CPU_AMD_K6_MODEL_7                = 0x110507,
     475    B_CPU_AMD_K6_MODEL_8                = 0x110508,
     476    B_CPU_AMD_K6_2                      = 0x110508,
     477    B_CPU_AMD_K6_MODEL_9                = 0x110509,
     478    B_CPU_AMD_K6_III                    = 0x110509,
     479    B_CPU_AMD_K6_III_MODEL_13           = 0x11050d,
    478480
    479     B_CPU_AMD_ATHLON_MODEL_1            = 0x1161,
    480     B_CPU_AMD_ATHLON_MODEL_2            = 0x1162,
     481    B_CPU_AMD_ATHLON_MODEL_1            = 0x110601,
     482    B_CPU_AMD_ATHLON_MODEL_2            = 0x110602,
    481483       
    482     B_CPU_AMD_DURON                     = 0x1163,   
     484    B_CPU_AMD_DURON                     = 0x110603,
    483485   
    484     B_CPU_AMD_ATHLON_THUNDERBIRD        = 0x1164,
    485     B_CPU_AMD_ATHLON_XP                 = 0x1166,
     486    B_CPU_AMD_ATHLON_THUNDERBIRD        = 0x110604,
     487    B_CPU_AMD_ATHLON_XP                 = 0x110606,
    486488    B_CPU_AMD_ATHLON_XP_MODEL_7,
    487489    B_CPU_AMD_ATHLON_XP_MODEL_8,
    488     B_CPU_AMD_ATHLON_XP_MODEL_10        = 0x116a, /* Barton */
     490    B_CPU_AMD_ATHLON_XP_MODEL_10        = 0x11060a, /* Barton */
    489491   
    490492    B_CPU_AMD_SEMPRON_MODEL_8           = B_CPU_AMD_ATHLON_XP_MODEL_8,
    491493    B_CPU_AMD_SEMPRON_MODEL_10          = B_CPU_AMD_ATHLON_XP_MODEL_10,
     
    493495    /* According to "Revision guide for AMD Athlon 64
    494496     * and AMD Opteron Processors" (25759.pdf)
    495497     */
    496     B_CPU_AMD_ATHLON_64_MODEL_3     = 0x11f3,
     498    B_CPU_AMD_ATHLON_64_MODEL_3     = 0x110f03,
    497499    B_CPU_AMD_ATHLON_64_MODEL_4,
    498500    B_CPU_AMD_ATHLON_64_MODEL_5,
    499501    B_CPU_AMD_OPTERON                   = B_CPU_AMD_ATHLON_64_MODEL_5,
    500502    B_CPU_AMD_ATHLON_64_FX              = B_CPU_AMD_ATHLON_64_MODEL_5,
    501     B_CPU_AMD_ATHLON_64_MODEL_7         = 0x11f7,
     503    B_CPU_AMD_ATHLON_64_MODEL_7         = 0x110f07,
    502504    B_CPU_AMD_ATHLON_64_MODEL_8,
    503     B_CPU_AMD_ATHLON_64_MODEL_11        = 0x11fb,
     505    B_CPU_AMD_ATHLON_64_MODEL_11        = 0x110f0b,
    504506    B_CPU_AMD_ATHLON_64_MODEL_12,
    505     B_CPU_AMD_ATHLON_64_MODEL_14        = 0x11fe,
     507    B_CPU_AMD_ATHLON_64_MODEL_14        = 0x110f0e,
    506508    B_CPU_AMD_ATHLON_64_MODEL_15,
    507509
    508510    /* VIA/Cyrix */
    509     B_CPU_CYRIX_x86                     = 0x1200,
    510     B_CPU_VIA_CYRIX_x86                 = 0x1200,
    511     B_CPU_CYRIX_GXm                     = 0x1254,
    512     B_CPU_CYRIX_6x86MX                  = 0x1260,
     511    B_CPU_CYRIX_x86                     = 0x120000,
     512    B_CPU_VIA_CYRIX_x86                 = 0x120000,
     513    B_CPU_CYRIX_GXm                     = 0x120504,
     514    B_CPU_CYRIX_6x86MX                  = 0x120600,
    513515
    514516    /* VIA/IDT */
    515     B_CPU_IDT_x86                       = 0x1300,
    516     B_CPU_VIA_IDT_x86                   = 0x1300,
    517     B_CPU_IDT_WINCHIP_C6                = 0x1354,
    518     B_CPU_IDT_WINCHIP_2                 = 0x1358,
     517    B_CPU_IDT_x86                       = 0x130000,
     518    B_CPU_VIA_IDT_x86                   = 0x130000,
     519    B_CPU_IDT_WINCHIP_C6                = 0x130504,
     520    B_CPU_IDT_WINCHIP_2                 = 0x130508,
    519521    B_CPU_IDT_WINCHIP_3,
    520     B_CPU_VIA_C3_SAMUEL                 = 0x1366,
    521     B_CPU_VIA_C3_SAMUEL_2               = 0x1367,
    522     B_CPU_VIA_C3_EZRA_T                 = 0x1368,
    523     B_CPU_VIA_C3_NEHEMIAH               = 0x1369,
     522    B_CPU_VIA_C3_SAMUEL                 = 0x130606,
     523    B_CPU_VIA_C3_SAMUEL_2               = 0x130607,
     524    B_CPU_VIA_C3_EZRA_T                 = 0x130608,
     525    B_CPU_VIA_C3_NEHEMIAH               = 0x130609,
    524526
    525527    /* Transmeta */
    526     B_CPU_TRANSMETA_x86                 = 0x1600,
    527     B_CPU_TRANSMETA_CRUSOE              = 0x1654,
     528    B_CPU_TRANSMETA_x86                 = 0x160000,
     529    B_CPU_TRANSMETA_CRUSOE              = 0x160504,
    528530
    529531    /* Rise */
    530     B_CPU_RISE_x86                      = 0x1400,
    531     B_CPU_RISE_mP6                      = 0x1450,
     532    B_CPU_RISE_x86                      = 0x140000,
     533    B_CPU_RISE_mP6                      = 0x140500,
    532534
    533535    /* National Semiconductor */
    534     B_CPU_NATIONAL_x86                  = 0x1500,
    535     B_CPU_NATIONAL_GEODE_GX1            = 0x1554,
     536    B_CPU_NATIONAL_x86                  = 0x150000,
     537    B_CPU_NATIONAL_GEODE_GX1            = 0x150504,
    536538    B_CPU_NATIONAL_GEODE_GX2,
    537539
    538540    /* For compatibility */
     
    549551    B_CPU_SPARC
    550552} cpu_type;
    551553
    552 #define B_CPU_x86_VENDOR_MASK   0xff00
     554#define B_CPU_x86_VENDOR_MASK   0xff0000
    553555
    554556#ifdef __INTEL__
    555557typedef union {
  • headers/private/shared/cpu_type.h

     
    4949                return "VIA";
    5050            return "IDT";
    5151        case B_CPU_RISE_x86:
    52             // TODO(bga): There is a conflict between new Intel
    53             // CPUs that sets extended model bits and the RISE
    54             // CPUs. For now we check for it here but there is
    55             // probably a better solution.
    56             if (type == B_CPU_INTEL_PENTIUM_CORE_2_EXTREME)
    57                 return "Intel";
    58             else
    5952                return "Rise";
    6053        case B_CPU_TRANSMETA_x86:
    6154            return "Transmeta";
     
    10497        case B_CPU_INTEL_PENTIUM_II_MODEL_5:
    10598            return "Pentium II";
    10699        case B_CPU_INTEL_CELERON:
     100        case B_CPU_INTEL_CELERON_MODEL_22:
    107101            return "Celeron";
    108102        case B_CPU_INTEL_PENTIUM_III:
    109103        case B_CPU_INTEL_PENTIUM_III_MODEL_8:
     
    117111            return "Core";
    118112        case B_CPU_INTEL_PENTIUM_CORE_2:
    119113            return "Core 2";
     114        case B_CPU_INTEL_PENTIUM_CORE_2_EXTREME:
     115            return "Core 2 Extreme";
    120116        case B_CPU_INTEL_PENTIUM_IV:
    121117        case B_CPU_INTEL_PENTIUM_IV_MODEL_1:
    122118        case B_CPU_INTEL_PENTIUM_IV_MODEL_2:
    123119        case B_CPU_INTEL_PENTIUM_IV_MODEL_3:       
    124120        case B_CPU_INTEL_PENTIUM_IV_MODEL_4:
    125121            return "Pentium 4";
    126         case B_CPU_INTEL_PENTIUM_CORE_2_EXTREME:
    127             return "Core 2 Extreme";
    128122
    129123        /* AMD */
    130124        case B_CPU_AMD_K5_MODEL_0:
  • src/system/kernel/arch/x86/arch_system_info.c

     
    115115    }
    116116
    117117    if (base != B_CPU_x86)
    118         model = (cpu->arch.extended_family << 14) +
    119         (cpu->arch.extended_model << 10) + (cpu->arch.family << 4) +
    120         cpu->arch.model;
     118        if (base == B_CPU_INTEL_x86)
     119            model = (cpu->arch.extended_family + cpu->arch.family << 8) +
     120            (cpu->arch.extended_model << 4) + cpu->arch.model;
     121        else
     122            model = (cpu->arch.family << 8) +
     123            cpu->arch.model;
     124            /*  There isn't much useful information yet in the extended
     125                family and extended model fields of AMD processors
     126                and is probably undefined for others */
    121127
    122128    sCpuRevision = (cpu->arch.extended_family << 18)
    123129                    | (cpu->arch.extended_model << 14)