1 #include <stdio.h>
main()2 int main() {
3 unsigned int CPUInfo0;
4 unsigned int CPUInfo1;
5 unsigned int CPUInfo2;
6 unsigned int CPUInfo3;
7 unsigned int InfoType;
8 #if defined(__i386__) && defined(__PIC__)
9 /* %ebx is PIC register in 32-bit, so mustn't clobber it. */
10 __asm__ __volatile__ (
11 "xchg %%ebx, %1\n"
12 "cpuid\n"
13 "xchg %%ebx, %1\n":
14 "=a" (CPUInfo0),
15 "=r" (CPUInfo1),
16 "=c" (CPUInfo2),
17 "=d" (CPUInfo3) :
18 "0" (InfoType), "2" (0)
19 );
20 #else
21 __asm__ __volatile__ (
22 "cpuid":
23 "=a" (CPUInfo0),
24 "=b" (CPUInfo1),
25 "=c" (CPUInfo2),
26 "=d" (CPUInfo3) :
27 "0" (InfoType), "2" (0)
28 );
29 #endif
30 return 0;
31 }
32