Rev 2131 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2131 | Rev 2315 | ||
|---|---|---|---|
| Line 97... | Line 97... | ||
| 97 | return ret; |
97 | return ret; |
| 98 | } |
98 | } |
| 99 | 99 | ||
| 100 | static inline void cpuid(uint32_t cmd, cpu_info_t *info) |
100 | static inline void cpuid(uint32_t cmd, cpu_info_t *info) |
| 101 | { |
101 | { |
| - | 102 | register int eax asm("eax")=cmd; |
|
| - | 103 | register int ebx asm("ebx"); |
|
| - | 104 | register int ecx asm("ecx"); |
|
| - | 105 | register int edx asm("edx"); |
|
| 102 | asm volatile ( |
106 | asm volatile ( |
| 103 | "movl %4, %%eax\n" |
- | |
| 104 | "cpuid\n" |
107 | "cpuid\n" |
| 105 | 108 | ||
| 106 | "movl %%eax, %0\n" |
- | |
| 107 | "movl %%ebx, %1\n" |
- | |
| 108 | "movl %%ecx, %2\n" |
- | |
| 109 | "movl %%edx, %3\n" |
- | |
| 110 | : "=m" (info->cpuid_eax), "=m" (info->cpuid_ebx), "=m" (info->cpuid_ecx), "=m" (info->cpuid_edx) |
109 | : "=r" (eax), "=r" (ebx), "=r" (ecx), "=r" (edx) |
| 111 | : "m" (cmd) |
110 | : "r" (eax) |
| 112 | : "eax", "ebx", "ecx", "edx" |
- | |
| 113 | ); |
111 | ); |
| - | 112 | info->cpuid_eax=eax; |
|
| - | 113 | info->cpuid_ebx=ebx; |
|
| - | 114 | info->cpuid_ecx=ecx; |
|
| - | 115 | info->cpuid_edx=edx; |
|
| 114 | } |
116 | } |
| 115 | 117 | ||
| 116 | #endif |
118 | #endif |
| 117 | 119 | ||
| 118 | /** @} |
120 | /** @} |