Subversion Repositories Kolibri OS

Rev

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