/* (C) 2002 Marcello Barnaba */ #include void cpuid(uint32_t mode, uint32_t *_eax, uint32_t *_ebx, uint32_t *_ecx, uint32_t *_edx) { volatile uint32_t eax, ebx, ecx, edx; __asm__ __volatile__ ( " movl %4, %%eax \n" " cpuid \n" : "=a" (eax), "=d" (edx), "=c" (ecx), "=b" (ebx) : "m" (mode) ); *_eax = eax; *_ebx = ebx; *_ecx = ecx; *_edx = edx; return; }