Subversion Repositories HelenOS-historic

Rev

Rev 1 | Rev 16 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1 Rev 15
Line 59... Line 59...
59
    "GenuineIntel"
59
    "GenuineIntel"
60
};
60
};
61
 
61
 
62
void cpu_arch_init(void)
62
void cpu_arch_init(void)
63
{
63
{
64
    the->cpu->arch.tss = tss_p;
64
    CPU->arch.tss = tss_p;
65
}
65
}
66
 
66
 
67
 
67
 
68
void cpu_identify(void)
68
void cpu_identify(void)
69
{
69
{
70
    cpu_info_t info;
70
    cpu_info_t info;
71
    int i;
71
    int i;
72
 
72
 
73
    the->cpu->arch.vendor = VendorUnknown;
73
    CPU->arch.vendor = VendorUnknown;
74
    if (has_cpuid()) {
74
    if (has_cpuid()) {
75
        cpuid(0, &info);
75
        cpuid(0, &info);
76
 
76
 
77
        /*
77
        /*
78
         * Check for AMD processor.
78
         * Check for AMD processor.
79
         */
79
         */
80
        if (info.cpuid_ebx==AMD_CPUID_EBX &&
80
        if (info.cpuid_ebx==AMD_CPUID_EBX &&
81
            info.cpuid_ecx==AMD_CPUID_ECX &&
81
            info.cpuid_ecx==AMD_CPUID_ECX &&
82
            info.cpuid_edx==AMD_CPUID_EDX) {
82
            info.cpuid_edx==AMD_CPUID_EDX) {
83
           
83
           
84
            the->cpu->arch.vendor = VendorAMD;
84
            CPU->arch.vendor = VendorAMD;
85
        }
85
        }
86
 
86
 
87
        /*
87
        /*
88
         * Check for Intel processor.
88
         * Check for Intel processor.
89
         */    
89
         */    
90
        if (info.cpuid_ebx==INTEL_CPUID_EBX &&
90
        if (info.cpuid_ebx==INTEL_CPUID_EBX &&
91
            info.cpuid_ecx==INTEL_CPUID_ECX &&
91
            info.cpuid_ecx==INTEL_CPUID_ECX &&
92
            info.cpuid_edx==INTEL_CPUID_EDX) {
92
            info.cpuid_edx==INTEL_CPUID_EDX) {
93
 
93
 
94
            the->cpu->arch.vendor = VendorIntel;
94
            CPU->arch.vendor = VendorIntel;
95
 
95
 
96
        }
96
        }
97
               
97
               
98
        cpuid(1, &info);
98
        cpuid(1, &info);
99
        the->cpu->arch.family = (info.cpuid_eax>>8)&0xf;
99
        CPU->arch.family = (info.cpuid_eax>>8)&0xf;
100
        the->cpu->arch.model = (info.cpuid_eax>>4)&0xf;
100
        CPU->arch.model = (info.cpuid_eax>>4)&0xf;
101
        the->cpu->arch.stepping = (info.cpuid_eax>>0)&0xf;                     
101
        CPU->arch.stepping = (info.cpuid_eax>>0)&0xf;                      
102
    }
102
    }
103
}
103
}
104
 
104
 
105
void cpu_print_report(struct cpu* m)
105
void cpu_print_report(struct cpu* m)
106
{
106
{