62 |
|
|
63 |
ALIGN 32 |
ALIGN 32 |
64 |
%ifdef FORMAT_COFF |
%ifdef FORMAT_COFF |
65 |
SECTION .rodata data |
SECTION .rodata |
66 |
%else |
%else |
67 |
SECTION .rodata data align=16 |
SECTION .rodata align=16 |
68 |
%endif |
%endif |
69 |
|
|
70 |
vendorAMD: |
vendorAMD: |
99 |
push edi |
push edi |
100 |
push ebp |
push ebp |
101 |
|
|
102 |
|
sub esp, 12 ; Stack space for vendor name |
103 |
|
|
104 |
xor ebp, ebp |
xor ebp, ebp |
105 |
|
|
106 |
; CPUID command ? |
; CPUID command ? |
120 |
; get vendor string, used later |
; get vendor string, used later |
121 |
xor eax, eax |
xor eax, eax |
122 |
cpuid |
cpuid |
123 |
mov [esp-12], ebx ; vendor string |
mov [esp], ebx ; vendor string |
124 |
mov [esp-12+4], edx |
mov [esp+4], edx |
125 |
mov [esp-12+8], ecx |
mov [esp+8], ecx |
126 |
test eax, eax |
test eax, eax |
127 |
|
|
128 |
jz near .cpu_quit |
jz near .cpu_quit |
153 |
|
|
154 |
; AMD cpu ? |
; AMD cpu ? |
155 |
lea esi, [vendorAMD] |
lea esi, [vendorAMD] |
156 |
lea edi, [esp-12] |
lea edi, [esp] |
157 |
mov ecx, 12 |
mov ecx, 12 |
158 |
cld |
cld |
159 |
repe cmpsb |
repe cmpsb |
172 |
|
|
173 |
mov eax, ebp |
mov eax, ebp |
174 |
|
|
175 |
|
add esp, 12 |
176 |
|
|
177 |
pop ebp |
pop ebp |
178 |
pop edi |
pop edi |
179 |
pop esi |
pop esi |