comparison cpudetect.c @ 2284:0c5fea3a0b91

amd...?
author pontscho
date Fri, 19 Oct 2001 13:28:59 +0000
parents baea37ed31f9
children dac462a0ac8c
comparison
equal deleted inserted replaced
2283:f6d14b1cd73e 2284:0c5fea3a0b91
132 caps->hasMMX2 = caps->hasSSE; 132 caps->hasMMX2 = caps->hasSSE;
133 } 133 }
134 if (regs[1] == 0x68747541 && // AuthenticAMD 134 if (regs[1] == 0x68747541 && // AuthenticAMD
135 regs[3] == 0x69746e65 && 135 regs[3] == 0x69746e65 &&
136 regs[2] == 0x444d4163) { 136 regs[2] == 0x444d4163) {
137 do_cpuid(0x00000001, regs2);
138 printf("CPU family: %d\n",(regs2[0] >> 8)&0xf);
139 switch ((regs2[0] >> 8)&0xf) {
140 case 3:
141 caps->cpuType=CPUTYPE_I386;
142 break;
143 case 4:
144 caps->cpuType=CPUTYPE_I486;
145 break;
146 case 5:
147 caps->cpuType=CPUTYPE_I586;
148 break;
149 case 6:
150 caps->cpuType=CPUTYPE_I686;
151 break;
152 default:
153 caps->cpuType=CPUTYPE_I386;
154 printf("Unknown cpu type, default to i386\n");
155 break;
156 }
137 do_cpuid(0x80000000, regs); 157 do_cpuid(0x80000000, regs);
138 printf("AMD cpuid-level: 0x%X\n",regs[0]); 158 printf("AMD cpuid-level: 0x%X\n",regs[0]);
139 if (regs[0]>=0x80000001) { 159 if (regs[0]>=0x80000001) {
140 do_cpuid(0x80000001, regs2); 160 do_cpuid(0x80000001, regs2);
141 caps->hasMMX = (regs2[3] & (1 << 23 )) >> 23; // 0x0800000 161 caps->hasMMX = (regs2[3] & (1 << 23 )) >> 23; // 0x0800000