99,18 → 99,20 |
|
static inline void cpuid(uint32_t cmd, cpu_info_t *info) |
{ |
register int eax asm("eax")=cmd; |
register int ebx asm("ebx"); |
register int ecx asm("ecx"); |
register int edx asm("edx"); |
asm volatile ( |
"movl %4, %%eax\n" |
"cpuid\n" |
|
"movl %%eax, %0\n" |
"movl %%ebx, %1\n" |
"movl %%ecx, %2\n" |
"movl %%edx, %3\n" |
: "=m" (info->cpuid_eax), "=m" (info->cpuid_ebx), "=m" (info->cpuid_ecx), "=m" (info->cpuid_edx) |
: "m" (cmd) |
: "eax", "ebx", "ecx", "edx" |
: "=r" (eax), "=r" (ebx), "=r" (ecx), "=r" (edx) |
: "r" (eax) |
); |
info->cpuid_eax=eax; |
info->cpuid_ebx=ebx; |
info->cpuid_ecx=ecx; |
info->cpuid_edx=edx; |
} |
|
#endif |