Rev 532 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 532 | Rev 6483 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ;Addresses for bits |
1 | ;Addresses for bits |
2 | 2 | ; edx cpuid(1) |
|
3 | FPU_FLAG equ 0001h ;Floating-point unit on-Chip |
3 | FPU_FLAG equ 0001h ;Floating-point unit on-Chip |
4 | VME_FLAG equ 0002h ;Virtual Mode Extension |
4 | VME_FLAG equ 0002h ;Virtual Mode Extension |
5 | DE_FLAG equ 0004h ;Debugging Extension |
5 | DE_FLAG equ 0004h ;Debugging Extension |
6 | PSE_FLAG equ 0008h ;Page Size Extension |
6 | PSE_FLAG equ 0008h ;Page Size Extension |
7 | TSC_FLAG equ 0010h ;Time-Stamp Counter |
7 | TSC_FLAG equ 0010h ;Time-Stamp Counter |
Line 36... | Line 36... | ||
36 | ; ecx cpuid(1) |
36 | ; ecx cpuid(1) |
37 | SSE3_FLAG equ 0001h ;SSE3 0 |
37 | SSE3_FLAG equ 0001h ;SSE3 0 |
38 | MON_FLAG equ 0008h ;MON -3 |
38 | MON_FLAG equ 0008h ;MON -3 |
39 | DS_CPL_FLAG equ 0010h ;DS-CPL -4 |
39 | DS_CPL_FLAG equ 0010h ;DS-CPL -4 |
40 | VMX_FLAG equ 0020h ;VMX -5 |
40 | VMX_FLAG equ 0020h ;VMX -5 |
- | 41 | SMX_FLAG equ 0040h ;SMX -6 to add |
|
41 | EST_FLAG equ 0080h ; EST-7 |
42 | EST_FLAG equ 0080h ; EST-7 |
42 | TM2_FLAG equ 0100h ; TM2-8 |
43 | TM2_FLAG equ 0100h ; TM2-8 |
43 | SSSE3_FLAG equ 0200h ;SSSE3 -9 |
44 | SSSE3_FLAG equ 0200h ;SSSE3 -9 |
44 | CNXT_ID_FLAG equ 0400h ;CID -10 |
45 | CNXT_ID_FLAG equ 0400h ;CID -10 |
45 | CX16_FLAG equ 2000h ;CX16 - 13 |
46 | CX16_FLAG equ 2000h ;CX16 - 13 |
46 | ETPRD_FLAG equ 4000h ;xTPR - 14 |
47 | ETPRD_FLAG equ 4000h ;xTPR - 14 |
- | 48 | PDCM_FLAG equ 8000h ;PDCM - 15 to add |
|
47 | DCA_FLAG equ 40000h ;DCA - 18 |
49 | DCA_FLAG equ 40000h ;DCA - 18 Direct Cache Access |
48 | - | ||
- | 50 | SSE41_FLAG equ 80000h ;SSE41 - 19 to add |
|
- | 51 | SSE42_FLAG equ 100000h ;SSE42 - 20 to add |
|
- | 52 | x2APIC_FLAG equ 200000h ;x2APIC - 21 to add |
|
- | 53 | PPCNT_FLAG equ 800000h ;PPCNT - 23 to add |
|
Line 49... | Line 54... | ||
49 | 54 | ||
50 | ; edx cpuid(8000_0001h) |
- | |
51 | 55 | ; edx cpuid(8000_0001h) |
|
52 | SYS_FLAG equ 0800h ;11 |
- | |
53 | 56 | SYS_FLAG equ 0800h ;11 - may be we already detect it as SEP_FLAG |
|
54 | MP_FLAG equ 80000h ;19 |
57 | MP_FLAG equ 80000h ;19 ???? not found in recent guides from AMD and Intel |
55 | NX_FLAG equ 100000h ;20 |
58 | NX_FLAG equ 100000h ;20 |
56 | MMXPi_FLAG equ 400000h ;22 |
59 | MMXPi_FLAG equ 400000h ;22 |
57 | MMXn_FLAG equ 800000h ;23 |
60 | MMXn_FLAG equ 800000h ;23 |
58 | FXSRn_FLAG equ 1000000h ;24 it is ÌÌÕ+ for Cyrix |
61 | FXSRn_FLAG equ 1000000h ;24 it is ÌÌÕ+ for Cyrix |
- | 62 | FFXSR_FLAG equ 2000000h ;25 |
|
59 | FFXSR_FLAG equ 2000000h ;25 |
63 | PAGE_FLAG equ 4000000h ;26 Page1Gb to add |
60 | TSCP_FLAG equ 8000000h ;27 |
64 | TSCP_FLAG equ 8000000h ;27 |
61 | LM_FLAG equ 20000000h ;29 EM64T |
65 | LM_FLAG equ 20000000h ;29 EM64T |
62 | DNo_FLAG equ 40000000h ;30 |
66 | DNo_FLAG equ 40000000h ;30 3dNow! Ext |
- | 67 | DN_FLAG equ 80000000h ;31 3dNow! |
|
Line 63... | Line 68... | ||
63 | DN_FLAG equ 80000000h ;31 |
68 | |
64 | 69 | ||
65 | ; ecx cpuid(8000_0001h) |
70 | ; ecx cpuid(8000_0001h) |
66 | LAHF_FLAG equ 0001h ; LAHF 0 |
71 | LAHF_FLAG equ 0001h ; LAHF 0 |
- | 72 | CMPL_FLAG equ 0002h ; core multi-processing legacy mode 1 |
|
67 | CMPL_FLAG equ 0002h ; core multi-processing legacy mode 1 |
73 | SVM_FLAG equ 0004h ; secure virtual machine 2 |
- | 74 | EAS_FLAG equ 0008h ; ExtApicSpace 3 to add |
|
- | 75 | MOVCR8_FLAG equ 0010h ; AltMovCr8 4 |
|
- | 76 | ABM_FLAG equ 0020h ; ABM -5 to add |
|
- | 77 | SSE4A_FLAG equ 0040h ; SSE4A -6 to add |
|
- | 78 | MIS_FLAG equ 0080h ; MissAlignSSE -7 to add |
|
- | 79 | 3DNP_FLAG equ 0100h ; 3DNowPrefetch-8 to add |
|
- | 80 | OSVW_FLAG equ 0200h ; OS visible workaround -9 to add |
|
- | 81 | SSE5_FLAG equ 0800h ;SSE5 - 11 to add |
|
Line 68... | Line -... | ||
68 | SVM_FLAG equ 0004h ; secure virtual machine 2 |
- | |
69 | MOVCR8_FLAG equ 0010h ;AltMovCr8 4 |
- | |
70 | - | ||
71 | ;////////////////////////////////////////////// |
- | |
72 | decode_sse3: ; is SS3 supported |
- | |
73 | xor eax, eax |
- | |
74 | inc eax |
- | |
75 | cpuid |
- | |
76 | test ecx, 1 |
- | |
77 | setnz [sse3sup] |
- | |
78 | mov eax, sse3+6 |
- | |
79 | - | ||
80 | write_yes_no: |
- | |
81 | mov dword [eax], 'no' |
- | |
82 | jz @f |
- | |
83 | mov dword [eax], 'yes' |
- | |
84 | @@: |
- | |
85 | ret |
- | |
86 | - | ||
87 | show_next_bit: |
- | |
88 | shr edx, 1 |
- | |
89 | write_yes_no_cf: |
- | |
90 | mov dword [eax], 'no' |
- | |
91 | jnc @f |
- | |
Line 92... | Line 82... | ||
92 | mov dword [eax], 'yes' |
82 | SKINIT_FLAG equ 1000h ;SKINIT- 12 to add |
Line 93... | Line 83... | ||
93 | @@: |
83 | WDT_FLAG equ 2000h ;Watchdog timer - 13 to add |
Line 94... | Line 84... | ||
94 | ret |
84 | |
95 | 85 | ||
96 | ;decoding standard features |
86 | ;decoding standard features |
Line 97... | Line -... | ||
97 | - | ||
98 | decode_standard_features: |
- | |
Line -... | Line 87... | ||
- | 87 | ||
99 | 88 | decode_standard_features: |
|
100 | xor eax,eax |
89 | |
Line 101... | Line 90... | ||
101 | inc eax |
90 | xor eax,eax |
102 | cpuid |
91 | inc eax |
Line 103... | Line 92... | ||
103 | 92 | cpuid |
|
104 | mov eax, FPU+6 |
93 | |
Line -... | Line 94... | ||
- | 94 | ||
- | 95 | Test0: |
|
105 | call show_next_bit |
96 | test edx, FPU_FLAG |
106 | 97 | jnz Test0e |
|
Line 107... | Line 98... | ||
107 | mov eax, VME+7 |
98 | |
108 | call show_next_bit |
99 | mov dword [FPU+6], $6F6E |
Line 109... | Line 100... | ||
109 | 100 | jmp Test1 |
|
110 | mov eax, DE+7 |
101 | |
Line -... | Line 102... | ||
- | 102 | Test0e: |
|
- | 103 | mov dword [FPU+6], $736579 |
|
111 | call show_next_bit |
104 | |
112 | 105 | ;;;;;; |
|
Line 113... | Line 106... | ||
113 | mov eax, PSE+8 |
106 | Test1: |
114 | call show_next_bit |
107 | test edx, VME_FLAG |
Line 115... | Line 108... | ||
115 | 108 | jnz Test1e |
|
116 | mov eax, TSC+6 |
109 | |
- | 110 | mov dword [VME+ 7], $6F6E |
|
Line -... | Line 111... | ||
- | 111 | jmp Test2 |
|
117 | call show_next_bit |
112 | |
- | 113 | Test1e: |
|
Line 118... | Line 114... | ||
118 | 114 | mov dword [VME+ 7], $736579 |
|
119 | mov eax, MSR+7 |
115 | |
Line 120... | Line 116... | ||
120 | call show_next_bit |
116 | ;;;;;; |
121 | 117 | Test2: |
|
Line -... | Line 118... | ||
- | 118 | test edx, DE_FLAG |
|
- | 119 | jnz Test2e |
|
122 | mov eax, PAE+7 |
120 | |
123 | call show_next_bit |
121 | mov dword [DE+ 7], $6F6E |
Line 124... | Line 122... | ||
124 | 122 | jmp Test3 |
|
125 | mov eax, MCE+8 |
123 | |
Line 126... | Line 124... | ||
126 | call show_next_bit |
124 | Test2e: |
127 | 125 | mov dword [DE+ 7], $736579 |
|
Line -... | Line 126... | ||
- | 126 | ;;;;;; |
|
- | 127 | ||
128 | mov eax, CX8+6 |
128 | Test3: |
129 | call show_next_bit |
129 | test edx, PSE_FLAG |
Line 130... | Line 130... | ||
130 | 130 | jnz Test3e |
|
131 | mov eax, APIC+7 |
131 | |
Line 132... | Line 132... | ||
132 | call show_next_bit |
132 | mov dword [PSE+ 8], $6F6E |
133 | 133 | jmp Test4 |
|
Line -... | Line 134... | ||
- | 134 | ||
- | 135 | Test3e: |
|
134 | shr edx, 1 ; skip reserved bit |
136 | mov dword [PSE+ 8], $736579 |
135 | 137 | ||
Line 136... | Line 138... | ||
136 | mov eax, SEP+8 |
138 | ;;;; |
- | 139 | Test4: |
|
Line 137... | Line 140... | ||
137 | call show_next_bit |
140 | test edx, TSC_FLAG |
138 | 141 | jnz Test4e |
|
Line -... | Line 142... | ||
- | 142 | ||
- | 143 | mov dword [TSC+ 6], $6F6E |
|
139 | mov eax, MTRR+6 |
144 | jmp Test5 |
140 | call show_next_bit |
145 | |
Line 141... | Line 146... | ||
141 | 146 | Test4e: |
|
142 | mov eax, PGE+7 |
- | |
143 | call show_next_bit |
147 | mov dword [TSC+ 6], $736579 |
144 | - | ||
Line 145... | Line 148... | ||
145 | mov eax, MCA+7 |
148 | |
146 | call show_next_bit |
149 | ;;;; |
Line -... | Line 150... | ||
- | 150 | Test5: |
|
- | 151 | test edx, MSR_FLAG |
|
147 | 152 | jnz Test5e |
|
148 | mov eax, CMOV+8 |
153 | |
Line 149... | Line 154... | ||
149 | call show_next_bit |
154 | mov dword [MSR+ 7], $6F6E |
150 | 155 | jmp Test6 |
|
Line 151... | Line 156... | ||
151 | mov eax, PAT+6 |
156 | |
152 | call show_next_bit |
157 | Test5e: |
- | 158 | mov dword [MSR+ 7], $736579 |
|
Line -... | Line 159... | ||
- | 159 | ||
- | 160 | ;;;; |
|
- | 161 | Test6: |
|
- | 162 | test edx, PAE_FLAG |
|
- | 163 | jnz Test6e |
|
- | 164 | ||
- | 165 | mov dword [PAE+ 7], $6F6E |
|
- | 166 | jmp Test7 |
|
- | 167 | ||
- | 168 | Test6e: |
|
- | 169 | mov dword [PAE+ 7], $736579 |
|
- | 170 | ||
- | 171 | ;;;; |
|
- | 172 | Test7: |
|
- | 173 | test edx, MCE_FLAG |
|
- | 174 | jnz Test7e |
|
- | 175 | ||
- | 176 | mov dword [MCE+ 8], $6F6E |
|
- | 177 | jmp Test8 |
|
- | 178 | ||
- | 179 | Test7e: |
|
- | 180 | mov dword [MCE+ 8], $736579 |
|
- | 181 | ||
- | 182 | ;;;; |
|
- | 183 | Test8: |
|
- | 184 | test edx, CX8_FLAG |
|
- | 185 | jnz Test8e |
|
- | 186 | ||
- | 187 | mov dword [CX8+ 6], $6F6E |
|
- | 188 | jmp Test9 |
|
- | 189 | ||
- | 190 | Test8e: |
|
- | 191 | mov dword [CX8+ 6], $736579 |
|
- | 192 | ;;;; |
|
- | 193 | ||
- | 194 | Test9: |
|
- | 195 | test edx, APIC_FLAG |
|
- | 196 | jnz Test9e |
|
- | 197 | ||
- | 198 | mov dword [APIC+ 7], $6F6E |
|
- | 199 | jmp Test11 |
|
- | 200 | ||
- | 201 | Test9e: |
|
- | 202 | mov dword [APIC+ 7], $736579 |
|
- | 203 | ;;;;; |
|
- | 204 | ||
- | 205 | Test11: |
|
- | 206 | test edx, SEP_FLAG |
|
- | 207 | jnz Test11e |
|
- | 208 | ||
- | 209 | mov dword [SEP+ 8], $6F6E |
|
- | 210 | jmp Test12 |
|
- | 211 | ||
- | 212 | Test11e: |
|
- | 213 | mov dword [SEP+ 8], $736579 |
|
- | 214 | ;;;; |
|
- | 215 | ||
- | 216 | Test12: |
|
- | 217 | test edx, MTRR_FLAG |
|
- | 218 | jnz Test12e |
|
- | 219 | ||
- | 220 | mov dword [MTRR+ 6], $6F6E |
|
- | 221 | jmp Test13 |
|
- | 222 | ||
- | 223 | Test12e: |
|
- | 224 | mov dword [MTRR+ 6], $736579 |
|
- | 225 | ;;;; |
|
- | 226 | ||
- | 227 | Test13: |
|
- | 228 | test edx, PGE_FLAG |
|
- | 229 | jnz Test13e |
|
- | 230 | ||
- | 231 | mov dword [PGE+ 7], $6F6E |
|
- | 232 | jmp Test14 |
|
- | 233 | ||
- | 234 | Test13e: |
|
- | 235 | mov dword [PGE+ 7], $736579 |
|
- | 236 | ;;;;; |
|
- | 237 | ||
- | 238 | Test14: |
|
- | 239 | test edx, MCA_FLAG |
|
- | 240 | jnz Test14e |
|
- | 241 | ||
- | 242 | mov dword [MCA+ 7], $6F6E |
|
- | 243 | jmp Test15 |
|
- | 244 | ||
- | 245 | Test14e: |
|
- | 246 | mov dword [MCA+ 7], $736579 |
|
- | 247 | ;;;; |
|
- | 248 | ||
- | 249 | Test15: |
|
- | 250 | test edx, CMOV_FLAG |
|
- | 251 | jnz Test15e |
|
- | 252 | ||
- | 253 | mov dword [CMOV+ 8], $6F6E |
|
- | 254 | jmp Test16 |
|
- | 255 | ||
- | 256 | Test15e: |
|
- | 257 | mov dword [CMOV+ 8], $736579 |
|
- | 258 | ;;;; |
|
- | 259 | ||
- | 260 | Test16: |
|
- | 261 | test edx, PAT_FLAG |
|
- | 262 | jnz Test16e |
|
- | 263 | ||
- | 264 | mov dword [PAT+ 6], $6F6E |
|
- | 265 | jmp Test17 |
|
- | 266 | ||
- | 267 | Test16e: |
|
- | 268 | mov dword [PAT+ 6], $736579 |
|
- | 269 | ;;;; |
|
- | 270 | ||
- | 271 | Test17: |
|
- | 272 | test edx, PSE36_FLAG |
|
153 | 273 | jnz Test17e |
|
- | 274 | ||
- | 275 | mov dword [PSE36+ 7], $6F6E |
|
- | 276 | jmp Test18 |
|
- | 277 | ||
- | 278 | Test17e: |
|
- | 279 | mov dword [PSE36+ 7], $736579 |
|
- | 280 | ;;;; |
|
- | 281 | ||
- | 282 | Test18: |
|
- | 283 | test edx, PSNUM_FLAG |
|
- | 284 | jnz Test18e |
|
- | 285 | ||
- | 286 | mov dword [PSNUM+ 7], $6F6E |
|
- | 287 | jmp Test19 |
|
- | 288 | ||
- | 289 | Test18e: |
|
- | 290 | mov dword [PSNUM+ 7], $736579 |
|
- | 291 | ;;;; |
|
- | 292 | ||
- | 293 | Test19: |
|
- | 294 | test edx, CLFLUSH_FLAG |
|
154 | mov eax, PSE36+7 |
295 | jnz Test19e |
- | 296 | ||
- | 297 | mov dword [CLFLUSHn + 8], $6F6E |
|
- | 298 | jmp Test21 |
|
- | 299 | ||
- | 300 | Test19e: |
|
- | 301 | mov dword [CLFLUSHn + 8], $736579 |
|
- | 302 | ;;;; |
|
- | 303 | ||
- | 304 | Test21: |
|
- | 305 | test edx, DTS_FLAG |
|
- | 306 | jnz Test21e |
|
- | 307 | ||
- | 308 | mov dword [DTS+ 7], $6F6E |
|
- | 309 | jmp Test22 |
|
- | 310 | ||
- | 311 | Test21e: |
|
- | 312 | mov dword [DTS+ 7], $736579 |
|
- | 313 | ;;;; |
|
- | 314 | ||
- | 315 | Test22: |
|
- | 316 | test edx, ACPI_FLAG |
|
- | 317 | jnz Test22e |
|
- | 318 | ||
- | 319 | mov dword [ACPI+ 7], $6F6E |
|
- | 320 | jmp Test23 |
|
- | 321 | ||
- | 322 | Test22e: |
|
- | 323 | mov dword [ACPI+ 7], $736579 |
|
- | 324 | ;;;;; |
|
- | 325 | ||
- | 326 | Test23: |
|
- | 327 | test edx, MMX_FLAG |
|
- | 328 | jnz Test23e |
|
- | 329 | ||
- | 330 | mov dword [MMX+ 8], $6F6E |
|
- | 331 | mov dword [MMXs+ 7], $6F6E |
|
- | 332 | jmp Test24 |
|
- | 333 | ||
- | 334 | Test23e: |
|
- | 335 | mov dword [MMX+ 8], $736579 |
|
- | 336 | mov dword [MMXs+ 7], $736579 |
|
- | 337 | ;;;;; |
|
- | 338 | ||
- | 339 | Test24: |
|
- | 340 | test edx, FXSR_FLAG |
|
- | 341 | jnz Test24e |
|
- | 342 | ||
- | 343 | mov dword [FXSR+ 6], $6F6E |
|
- | 344 | jmp Test25 |
|
- | 345 | ||
- | 346 | Test24e: |
|
- | 347 | mov dword [FXSR+ 6], $736579 |
|
- | 348 | ;;;;; |
|
- | 349 | ||
- | 350 | Test25: |
|
155 | call show_next_bit |
351 | test edx, SSE_FLAG |
- | 352 | jnz Test25e |
|
- | 353 | ||
156 | 354 | mov dword [SSE+ 7], $6F6E |
|
- | 355 | jmp Test26 |
|
- | 356 | ||
- | 357 | Test25e: |
|
- | 358 | mov dword [SSE+ 7], $736579 |
|
Line 157... | Line 359... | ||
157 | mov eax, PSNUM+7 |
359 | |
158 | call show_next_bit |
- | |
Line -... | Line 360... | ||
- | 360 | ;;;; |
|
159 | 361 | Test26: |
|
160 | mov eax, CLFLUSHn+8 |
362 | test edx, SSE2_FLAG |
Line 161... | Line 363... | ||
161 | call show_next_bit |
363 | jnz Test26e |
162 | 364 | ||
Line -... | Line 365... | ||
- | 365 | mov dword [SSE2+ 7], $6F6E |
|
- | 366 | jmp Test27 |
|
- | 367 | ||
- | 368 | Test26e: |
|
- | 369 | mov dword [SSE2+ 7], $736579 |
|
- | 370 | ||
- | 371 | ;;;; |
|
163 | shr edx, 1 ; skip reserved bit |
372 | |
Line -... | Line 373... | ||
- | 373 | Test27: |
|
- | 374 | test edx, SS_FLAG |
|
- | 375 | jnz Test27e |
|
- | 376 | ||
- | 377 | mov dword [SSn+ 8], $6F6E |
|
- | 378 | jmp Test29;28 |
|
- | 379 | ||
- | 380 | Test27e: |
|
- | 381 | mov dword [SSn+ 8], $736579 |
|
- | 382 | ||
- | 383 | ;;;; |
|
- | 384 | ||
- | 385 | ;Test28: |
|
- | 386 | ;test edx, HTT_FLAG |
|
- | 387 | ;jnz Test28e |
|
- | 388 | ; |
|
- | 389 | ;mov dword [HTT+ 8], $6F6E |
|
- | 390 | ;jmp Test29 |
|
- | 391 | ; |
|
- | 392 | ;Test28e: |
|
164 | 393 | ;mov dword [HTT+ 8], $736579 |
|
165 | mov eax, DTS+7 |
394 | |
- | 395 | ;;;; |
|
- | 396 | ||
- | 397 | Test29: |
|
- | 398 | test edx, TM_FLAG |
|
- | 399 | jnz Test29e |
|
- | 400 | ||
- | 401 | mov dword [TM+ 7], $6F6E |
|
- | 402 | jmp Test30 |
|
- | 403 | ||
- | 404 | Test29e: |
|
- | 405 | mov dword [TM+ 7], $736579 |
|
- | 406 | ||
- | 407 | ;;;; |
|
- | 408 | ||
- | 409 | Test30: |
|
- | 410 | test edx, IA64_FLAG |
|
- | 411 | jnz Test30e |
|
- | 412 | ||
- | 413 | mov dword [IA64+ 7], $6F6E |
|
- | 414 | jmp Test31 |
|
- | 415 | ||
- | 416 | Test30e: |
|
- | 417 | mov dword [IA64+ 7], $736579 |
|
- | 418 | ||
- | 419 | ;;;; |
|
- | 420 | Test31: |
|
- | 421 | test edx, PBE_FLAG |
|
- | 422 | jnz Test31e |
|
- | 423 | ||
- | 424 | mov dword [PBE+ 8], $6F6E |
|
- | 425 | jmp Standart_out |
|
- | 426 | ||
- | 427 | Test31e: |
|
- | 428 | mov dword [PBE+ 8], $736579 |
|
166 | call show_next_bit |
429 | |
- | 430 | Standart_out: |
|
- | 431 | ||
- | 432 | ret |
|
- | 433 | ;////////////////////////////////////////////// |
|
- | 434 | decode_sse3_5: ; is SS3-5 supported |
|
- | 435 | xor eax,eax |
|
- | 436 | inc eax |
|
- | 437 | cpuid |
|
- | 438 | test ecx, $1 ; Test bit 1 |
|
- | 439 | jnz .EX; SSE3 technology is supported |
|
- | 440 | jz .EXN |
|
- | 441 | ||
- | 442 | .EX: |
|
- | 443 | mov dword [sse3+ 6], $736579 |
|
- | 444 | mov [sse3sup], 1 |
|
167 | 445 | jmp exitter |
|
168 | mov eax, ACPI+7 |
446 | .EXN: |
169 | call show_next_bit |
447 | mov dword [sse3+ 6], $6F6E |
- | 448 | mov [sse3sup],0 |
|
- | 449 | ||
- | 450 | exitter: |
|
- | 451 | ||
- | 452 | ||
- | 453 | test ecx, $80000 ; Test bit 19 |
|
- | 454 | jnz .EX1; SSE41 technology is supported |
|
- | 455 | jz .EXN1 |
|
- | 456 | ||
- | 457 | .EX1: |
|
- | 458 | mov dword [SSE41+ 11], $736579 |
|
- | 459 | mov [sse41sup], 1 |
|
- | 460 | jmp exitter1 |
|
- | 461 | .EXN1: |
|
- | 462 | mov dword [SSE41+ 11], $6F6E |
|
Line -... | Line 463... | ||
- | 463 | mov [sse41sup],0 |
|
- | 464 | ||
170 | 465 | exitter1: |
|
- | 466 | ||
- | 467 | ||
- | 468 | test ecx, $100000 ; Test bit 20 |
|
171 | mov eax, MMX+8 |
469 | jnz .EX2; SSE42 technology is supported |
- | 470 | jz .EXN2 |
|
- | 471 | ||
172 | call show_next_bit |
472 | .EX2: |
- | 473 | mov dword [SSE42+ 10], $736579 |
|
- | 474 | mov dword [SS42+ 11], $736579 |
|
- | 475 | mov [sse42sup], 1 |
|
- | 476 | jmp exitter2 |
|
- | 477 | .EXN2: |
|
Line 173... | Line 478... | ||
173 | mov eax, [eax] |
478 | mov dword [SSE42+ 10], $6F6E |
174 | mov [MMXs+7], eax |
479 | mov dword [SS42+ 11], $6F6E |
175 | 480 | mov [sse42sup],0 |
|
Line -... | Line 481... | ||
- | 481 | ||
- | 482 | exitter2: |
|
- | 483 | ||
- | 484 | ||
176 | mov eax, FXSR+6 |
485 | xor eax,eax |
- | 486 | mov eax, 80000001h |
|
- | 487 | cpuid |
|
- | 488 | test ecx, $800 ; Test bit 11 |
|
177 | call show_next_bit |
489 | jnz .EX3; SS5 technology is supported |
- | 490 | jz .EXN3 |
|
- | 491 | ||
178 | 492 | .EX3: |
|
- | 493 | mov dword [SSE5+ 12], $736579 |
|
Line -... | Line 494... | ||
- | 494 | mov [sse5sup], 1 |
|
179 | mov eax, SSE+7 |
495 | jmp exitter3 |
- | 496 | .EXN3: |
|
- | 497 | mov dword [SSE5+ 12], $6F6E |
|
180 | call show_next_bit |
498 | mov [sse5sup],0 |
- | 499 | ||
- | 500 | exitter3: |
|
181 | 501 | ||
- | 502 | ret |
|
- | 503 | ||
- | 504 | ||
- | 505 | decode_extended_features: |
|
- | 506 | xor eax,eax |
|
Line 182... | Line 507... | ||
182 | mov eax, SSE2+7 |
507 | inc eax |
183 | call show_next_bit |
508 | cpuid |
- | 509 | Tes1: |
|
- | 510 | test ecx, SSE3_FLAG |
|
184 | 511 | jnz Tes1e |
|
- | 512 | ||
- | 513 | mov dword [SS3+ 8], $6F6E |
|
- | 514 | jmp Tes2 |
|
- | 515 | ||
- | 516 | Tes1e: |
|
Line 185... | Line 517... | ||
185 | mov eax, SSn+8 |
517 | mov dword [SS3+ 8], $736579 |
186 | call show_next_bit |
518 | |
187 | 519 | ||
Line -... | Line 520... | ||
- | 520 | Tes2: |
|
- | 521 | test ecx, MON_FLAG |
|
- | 522 | jnz Tes2e |
|
- | 523 | ||
188 | shr edx, 1 |
524 | mov dword [MON+ 8], $6F6E |
- | 525 | jmp Tes3 |
|
- | 526 | ||
- | 527 | Tes2e: |
|
189 | ; mov eax, HTT+8 |
528 | mov dword [MON+ 8], $736579 |
- | 529 | ||
- | 530 | ||
190 | ; test edx, HTT_FLAG |
531 | Tes3: |
- | 532 | test ecx, DS_CPL_FLAG |
|
Line -... | Line 533... | ||
- | 533 | jnz Tes3e |
|
191 | ; call write_yes_no |
534 | |
- | 535 | mov dword [DS_CPL+ 8], $6F6E |
|
- | 536 | jmp Tes4 |
|
- | 537 | ||
192 | 538 | Tes3e: |
|
- | 539 | mov dword [DS_CPL+ 8], $736579 |
|
- | 540 | ||
- | 541 | Tes4: |
|
- | 542 | test ecx, EST_FLAG |
|
- | 543 | jnz Tes4e |
|
- | 544 | ||
193 | mov eax, TM+7 |
545 | mov dword [EST+ 8], $6F6E |
Line 194... | Line 546... | ||
194 | call show_next_bit |
546 | jmp Tes5 |
195 | 547 | ||
196 | mov eax, IA64+7 |
548 | Tes4e: |
Line -... | Line 549... | ||
- | 549 | mov dword [EST+ 8], $736579 |
|
- | 550 | ||
- | 551 | ||
- | 552 | Tes5: |
|
197 | call show_next_bit |
553 | test ecx, TM2_FLAG |
- | 554 | jnz Tes5e |
|
- | 555 | ||
198 | 556 | mov dword [TM2+ 8], $6F6E |
|
- | 557 | jmp Tes6 |
|
- | 558 | ||
- | 559 | Tes5e: |
|
- | 560 | mov dword [TM2+ 8], $736579 |
|
- | 561 | ||
- | 562 | ||
199 | mov eax, PBE+8 |
563 | Tes6: |
Line 200... | Line 564... | ||
200 | call show_next_bit |
564 | test ecx, CNXT_ID_FLAG |
201 | 565 | jnz Tes6e |
|
- | 566 | ||
- | 567 | mov dword [CNXT_ID+ 12], $6F6E |
|
202 | ret |
568 | jmp Tes7 |
- | 569 | ||
- | 570 | Tes6e: |
|
- | 571 | mov dword [CNXT_ID+ 12], $736579 |
|
- | 572 | ||
- | 573 | ||
- | 574 | Tes7: |
|
- | 575 | test ecx, CX16_FLAG |
|
- | 576 | jnz Tes7e |
|
- | 577 | ||
- | 578 | mov dword [CX16+ 12], $6F6E |
|
- | 579 | jmp Tes8 |
|
- | 580 | ||
- | 581 | Tes7e: |
|
- | 582 | mov dword [CX16+ 12], $736579 |
|
- | 583 | ||
- | 584 | ||
- | 585 | Tes8: |
|
- | 586 | test ecx, ETPRD_FLAG |
|
- | 587 | jnz Tes8e |
|
- | 588 | ||
- | 589 | mov dword [ETPRD+ 12], $6F6E |
|
- | 590 | jmp Tes9 |
|
- | 591 | ||
- | 592 | Tes8e: |
|
- | 593 | mov dword [ETPRD+ 12], $736579 |
|
- | 594 | ||
- | 595 | Tes9: |
|
- | 596 | test ecx, VMX_FLAG |
|
- | 597 | jnz Tes9e |
|
- | 598 | ||
- | 599 | mov dword [VMX+ 8], $6F6E |
|
- | 600 | jmp Tes10 |
|
- | 601 | ||
- | 602 | Tes9e: |
|
- | 603 | mov dword [VMX+ 8], $736579 |
|
- | 604 | ||
- | 605 | Tes10: |
|
- | 606 | test ecx, SSSE3_FLAG |
|
- | 607 | jnz Tes10e |
|
- | 608 | ||
- | 609 | mov dword [SSSE3+ 12], $6F6E |
|
- | 610 | jmp Tes11 |
|
- | 611 | ||
- | 612 | Tes10e: |
|
- | 613 | mov dword [SSSE3+ 12], $736579 |
|
203 | 614 | ||
- | 615 | Tes11: |
|
204 | ;////////////////////////////////////////////// |
616 | test ecx, DCA_FLAG |
Line 205... | Line 617... | ||
205 | decode_extended_features: |
617 | jnz Tes11e |
206 | ; is called immediately after decode_standard_features |
618 | |
- | 619 | mov dword [DCA+ 8], $6F6E |
|
207 | ; xor eax, eax |
620 | jmp Tes12 |
208 | ; inc eax |
621 | |
209 | ; cpuid |
- | |
210 | - | ||
211 | mov eax, SS3+8 |
- | |
Line -... | Line 622... | ||
- | 622 | Tes11e: |
|
- | 623 | mov dword [DCA+ 8], $736579 |
|
- | 624 | ||
- | 625 | Tes12: |
|
- | 626 | test ecx, SMX_FLAG |
|
- | 627 | jnz Tes12e |
|
- | 628 | ||
- | 629 | mov dword [SMX+ 8], $6F6E |
|
- | 630 | jmp Tes13 |
|
- | 631 | ||
- | 632 | Tes12e: |
|
212 | test ecx, SSE3_FLAG |
633 | mov dword [SMX+ 8], $736579 |
213 | call write_yes_no |
634 | |
Line 214... | Line 635... | ||
214 | 635 | Tes13: |
|
215 | mov eax, MON+8 |
636 | test ecx, PDCM_FLAG |
216 | test ecx, MON_FLAG |
637 | jnz Tes13e |
Line 217... | Line 638... | ||
217 | call write_yes_no |
638 | |
- | 639 | mov dword [newLabel+ 8], $6F6E |
|
- | 640 | jmp Tes14 |
|
- | 641 | ||
- | 642 | Tes13e: |
|
- | 643 | mov dword [newLabel+ 8], $736579 |
|
- | 644 | ||
218 | 645 | Tes14: |
|
219 | mov eax, DS_CPL+8 |
646 | test ecx, x2APIC_FLAG |
Line -... | Line 647... | ||
- | 647 | jnz Tes14e |
|
- | 648 | ||
220 | test ecx, DS_CPL_FLAG |
649 | mov dword [x2APIC+ 8], $6F6E |
- | 650 | jmp Tes15 |
|
- | 651 | ||
221 | call write_yes_no |
652 | Tes14e: |
- | 653 | mov dword [x2APIC+ 8], $736579 |
|
- | 654 | ||
222 | 655 | Tes15: |
|
223 | mov eax, EST+8 |
656 | test ecx, PPCNT_FLAG |
Line 224... | Line 657... | ||
224 | test ecx, EST_FLAG |
657 | jnz Tes15e |
- | 658 | ||
- | 659 | mov dword [PPCNT+ 12], $6F6E |
|
- | 660 | jmp Tes16 |
|
- | 661 | ||
- | 662 | Tes15e: |
|
- | 663 | mov dword [PPCNT+ 12], $736579 |
|
- | 664 | ||
225 | call write_yes_no |
665 | Tes16: |
- | 666 | ||
- | 667 | ret |
|
226 | 668 | ||
- | 669 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
Line -... | Line 670... | ||
- | 670 | decode_extended: |
|
227 | mov eax, TM2+8 |
671 | xor eax, eax |
- | 672 | mov eax,$80000000 |
|
- | 673 | cpuid |
|
228 | test ecx, TM2_FLAG |
674 | |
- | 675 | test eax, 80000000h |
|
- | 676 | jnz gooodd |
|
229 | call write_yes_no |
677 | |
- | 678 | jmp baaad |
|
Line -... | Line 679... | ||
- | 679 | ||
230 | 680 | baaad: |
|
- | 681 | ||
- | 682 | jmp Tez13 |
|
231 | mov eax, CNXT_ID+12 |
683 | |
- | 684 | gooodd: |
|
- | 685 | xor eax, eax |
|
232 | test ecx, CNXT_ID_FLAG |
686 | mov eax, $80000001 ;// Setup extended function 8000_0001h |
- | 687 | cpuid |
|
Line -... | Line 688... | ||
- | 688 | ||
233 | call write_yes_no |
689 | Tez1: |
- | 690 | test edx, MP_FLAG |
|
- | 691 | jnz Tez1e |
|
234 | 692 | ||
- | 693 | mov dword [MP+8], $6F6E |
|
- | 694 | jmp Tez2 |
|
235 | mov eax, CX16+12 |
695 | |
- | 696 | Tez1e: |
|
- | 697 | mov dword [MP+ 8], $736579 |
|
- | 698 | ||
- | 699 | Tez2: |
|
- | 700 | test edx, NX_FLAG |
|
Line 236... | Line 701... | ||
236 | test ecx, CX16_FLAG |
701 | jnz Tez2e |
237 | call write_yes_no |
702 | |
238 | 703 | mov dword [NX+ 8], $6F6E |
|
Line 239... | Line 704... | ||
239 | mov eax, ETPRD+12 |
704 | jmp Tez4 |
- | 705 | ;jmp Tez3 we do detection in another place, because of Cyrix specific MMX+ detection |
|
- | 706 | ||
- | 707 | Tez2e: |
|
- | 708 | mov dword [NX+ 8], $736579 |
|
- | 709 | ||
- | 710 | ;Tez3: |
|
240 | test ecx, ETPRD_FLAG |
711 | ;test edx, MMXPi_FLAG |
- | 712 | ;jnz Tez3e |
|
- | 713 | ||
241 | call write_yes_no |
714 | ;mov dword [MMXPi+ 8], $6F6E |
- | 715 | ;jmp Tez4 |
|
- | 716 | ||
- | 717 | ||
- | 718 | ;Tez3e: |
|
Line -... | Line 719... | ||
- | 719 | ;mov dword [MMXPi+ 8], $736579 |
|
242 | 720 | ||
243 | mov eax, VMX+8 |
721 | Tez4: |
- | 722 | test edx, MMXn_FLAG |
|
- | 723 | jnz Tez4e |
|
244 | test ecx, VMX_FLAG |
724 | |
- | 725 | mov dword [MMXn+ 8], $6F6E |
|
- | 726 | jmp Tez5 |
|
- | 727 | ||
- | 728 | Tez4e: |
|
Line 245... | Line 729... | ||
245 | call write_yes_no |
729 | mov dword [MMXn+ 8], $736579 |
- | 730 | ||
246 | 731 | Tez5: |
|
247 | mov eax, SSSE3+12 |
732 | test edx, FXSRn_FLAG |
- | 733 | jnz Tez5e |
|
- | 734 | ||
248 | test ecx, SSSE3_FLAG |
735 | mov dword [FXSRn+ 8], $6F6E |
- | 736 | jmp Tez6 |
|
- | 737 | ||
- | 738 | Tez5e: |
|
- | 739 | mov dword [FXSRn+ 8], $736579 |
|
- | 740 | ||
Line 249... | Line 741... | ||
249 | call write_yes_no |
741 | Tez6: |
250 | 742 | test edx, FFXSR_FLAG |
|
251 | mov eax, DCA+8 |
743 | jnz Tez6e |
Line -... | Line 744... | ||
- | 744 | ||
- | 745 | mov dword [FFXSR+ 12], $6F6E |
|
- | 746 | jmp Tez7 |
|
- | 747 | ||
252 | test ecx, DCA_FLAG |
748 | Tez6e: |
- | 749 | mov dword [FFXSR+ 12], $736579 |
|
- | 750 | ||
253 | call write_yes_no |
751 | Tez7: |
- | 752 | test edx, TSCP_FLAG |
|
- | 753 | jnz Tez7e |
|
254 | @@: |
754 | |
- | 755 | mov dword [TSCP+ 12], $6F6E |
|
- | 756 | jmp Tez8 |
|
- | 757 | ||
- | 758 | Tez7e: |
|
Line 255... | Line 759... | ||
255 | ret |
759 | mov dword [TSCP+ 12], $736579 |
256 | 760 | ||
257 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
761 | |
Line -... | Line 762... | ||
- | 762 | Tez8: |
|
- | 763 | test edx, LM_FLAG |
|
- | 764 | jnz Tez8e |
|
- | 765 | ||
258 | decode_extended: |
766 | mov dword [LM+ 12], $6F6E |
- | 767 | jmp Tez9 |
|
- | 768 | ||
259 | mov eax, $80000000 |
769 | Tez8e: |
- | 770 | mov dword [LM+ 12], $736579 |
|
- | 771 | ||
- | 772 | Tez9: |
|
- | 773 | test edx, DNo_FLAG |
|
- | 774 | jnz Tez9e |
|
- | 775 | ||
- | 776 | mov dword [DNo+ 12], $6F6E |
|
- | 777 | jmp Tez10 |
|
- | 778 | ||
- | 779 | Tez9e: |
|
- | 780 | mov dword [DNo+ 12], $736579 |
|
- | 781 | ||
- | 782 | ||
- | 783 | Tez10: |
|
- | 784 | test edx, DN_FLAG |
|
- | 785 | jnz Tez10e |
|
- | 786 | ||
- | 787 | mov dword [DN+ 12], $6F6E |
|
- | 788 | jmp Tez11 |
|
- | 789 | ||
- | 790 | Tez10e: |
|
- | 791 | mov dword [DN+ 12], $736579 |
|
- | 792 | ||
- | 793 | ;Intel |
|
- | 794 | ||
- | 795 | Tez11: |
|
- | 796 | test edx, SYS_FLAG |
|
- | 797 | jnz Tez11e |
|
- | 798 | ||
- | 799 | mov dword [SYS+ 12], $6F6E |
|
- | 800 | jmp Tez12 |
|
- | 801 | ||
- | 802 | Tez11e: |
|
- | 803 | mov dword [SYS+ 12], $736579 |
|
- | 804 | ||
- | 805 | ||
- | 806 | Tez12: |
|
- | 807 | test ecx, LAHF_FLAG |
|
- | 808 | jnz Tez12e |
|
- | 809 | ||
- | 810 | mov dword [LAF+ 12], $6F6E |
|
- | 811 | jmp Tez13 |
|
- | 812 | ||
- | 813 | Tez12e: |
|
- | 814 | mov dword [LAF+ 12], $736579 |
|
- | 815 | ||
- | 816 | Tez13: |
|
- | 817 | test ecx, CMPL_FLAG |
|
- | 818 | jnz Tez13e |
|
- | 819 | ||
- | 820 | mov dword [CMPL+ 8], $6F6E |
|
- | 821 | jmp Tez14 |
|
- | 822 | ||
- | 823 | Tez13e: |
|
- | 824 | mov dword [CMPL+ 8], $736579 |
|
- | 825 | ||
- | 826 | Tez14: |
|
- | 827 | test ecx, SVM_FLAG |
|
- | 828 | jnz Tez14e |
|
- | 829 | ||
- | 830 | mov dword [SVM+ 8], $6F6E |
|
- | 831 | jmp Tez15 |
|
260 | cpuid |
832 | |
- | 833 | Tez14e: |
|
- | 834 | mov dword [SVM+ 8], $736579 |
|
- | 835 | ||
- | 836 | Tez15: |
|
- | 837 | test ecx, MOVCR8_FLAG |
|
- | 838 | jnz Tez15e |
|
- | 839 | ||
- | 840 | mov dword [MCR8+ 12], $6F6E |
|
- | 841 | jmp Tez16 |
|
- | 842 | ||
- | 843 | Tez15e: |
|
- | 844 | mov dword [MCR8+ 12], $736579 |
|
- | 845 | ||
- | 846 | Tez16: |
|
- | 847 | test edx, PAGE_FLAG |
|
- | 848 | jnz Tez16e |
|
- | 849 | ||
- | 850 | mov dword [PAGE+ 8], $6F6E |
|
- | 851 | jmp Tez17 |
|
- | 852 | ||
- | 853 | Tez16e: |
|
Line -... | Line 854... | ||
- | 854 | mov dword [PAGE+ 8], $736579 |
|
- | 855 | ||
- | 856 | Tez17: |
|
- | 857 | test ecx, EAS_FLAG |
|
- | 858 | jnz Tez17e |
|
- | 859 | ||
- | 860 | mov dword [EAS+ 12], $6F6E |
|
- | 861 | jmp Tez18 |
|
- | 862 | ||
- | 863 | Tez17e: |
|
- | 864 | mov dword [EAS+ 12], $736579 |
|
- | 865 | ||
- | 866 | Tez18: |
|
- | 867 | test ecx, ABM_FLAG |
|
- | 868 | jnz Tez18e |
|
- | 869 | ||
- | 870 | mov dword [ABM+ 8], $6F6E |
|
- | 871 | jmp Tez19 |
|
- | 872 | ||
- | 873 | Tez18e: |
|
- | 874 | mov dword [ABM+ 8], $736579 |
|
- | 875 | ||
- | 876 | Tez19: |
|
- | 877 | test ecx, SSE4A_FLAG |
|
- | 878 | jnz Tez19e |
|
- | 879 | ||
- | 880 | mov dword [SSE4A+ 8], $6F6E |
|
- | 881 | jmp Tez20 |
|
- | 882 | ||
- | 883 | Tez19e: |
|
- | 884 | mov dword [SSE4A+ 8], $736579 |
|
- | 885 | ||
- | 886 | Tez20: |
|
- | 887 | test ecx, MIS_FLAG |
|
- | 888 | jnz Tez20e |
|
- | 889 | ||
- | 890 | mov dword [MIS+ 8], $6F6E |
|
- | 891 | jmp Tez21 |
|
- | 892 | ||
- | 893 | Tez20e: |
|
261 | mov [extc], eax ; max number of calls |
894 | mov dword [MIS+ 8], $736579 |