Subversion Repositories Kolibri OS

Rev

Rev 532 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
318 heavyiron 1
;Addresses for bits
6483 mat1854 2
; edx cpuid(1)
318 heavyiron 3
FPU_FLAG equ 0001h    ;Floating-point unit on-Chip
4
VME_FLAG equ 0002h    ;Virtual Mode Extension
5
DE_FLAG equ 0004h     ;Debugging Extension
6
PSE_FLAG equ 0008h    ;Page Size Extension
7
TSC_FLAG equ 0010h    ;Time-Stamp Counter
8
MSR_FLAG equ 0020h    ;Model Specific Registers
9
PAE_FLAG equ 0040h    ;Physical Address Extension
10
MCE_FLAG equ 0080h    ;Machine Check Exception
11
CX8_FLAG equ 0100h    ;CMPXCHG8 Instruction Supported
12
APIC_FLAG equ 0200h   ;On-chip APIC Hardware Supported
13
;10_FLAG equ 0400h   ;Reserved
14
SEP_FLAG equ 0800h	 ;Fast System Call
15
MTRR_FLAG equ 1000h	 ;Memory Type Range Registers
16
PGE_FLAG equ 2000h	 ;Page Global Enable
17
MCA_FLAG equ 4000h	 ;Machine Check Architecture
18
CMOV_FLAG equ 8000h	 ;Conditional Move Instruction Supported
19
PAT_FLAG equ 10000h	 ;Page Attribute Table
20
PSE36_FLAG equ 20000h	 ;36-bit Page Size Extension
21
PSNUM_FLAG equ 40000h	 ;Processor serial number present and enabled
22
CLFLUSH_FLAG equ 80000h  ;CLFLUSH Instruction supported
23
;20_FLAG equ 100000h  ;Reserved
24
DTS_FLAG equ 200000h	 ;Debug Store
25
ACPI_FLAG equ 400000h	 ;Thermal Monitor and Software Controlled Clock Facilities supported
26
MMX_FLAG equ 800000h	 ;Intel Architecture MMX technology supported
27
FXSR_FLAG equ 1000000h	 ;Fast floating point save and restore
28
SSE_FLAG equ 2000000h	 ;Streaming SIMD Extensions supported
29
SSE2_FLAG equ 4000000h	 ;Streaming SIMD Extensions 2
30
SS_FLAG equ 8000000h	 ;Self-Snoop
31
;HTT_FLAG equ 10000000h   ;Hyper-Threading Technology
32
TM_FLAG equ 20000000h	 ;Thermal Monitor supported
6483 mat1854 33
IA64_FLAG equ 40000000h  ; IA-64
318 heavyiron 34
PBE_FLAG equ 80000000h	  ;Pending Break Enable
35
 
36
; ecx cpuid(1)
37
SSE3_FLAG equ 0001h	  ;SSE3 0
38
MON_FLAG equ 0008h	  ;MON -3
39
DS_CPL_FLAG equ 0010h	  ;DS-CPL -4
40
VMX_FLAG equ 0020h	  ;VMX -5
6483 mat1854 41
SMX_FLAG equ 0040h	  ;SMX -6                  to  add
318 heavyiron 42
EST_FLAG equ 0080h	  ; EST-7
43
TM2_FLAG equ 0100h	  ; TM2-8
44
SSSE3_FLAG equ 0200h	  ;SSSE3 -9
45
CNXT_ID_FLAG equ 0400h	  ;CID -10
46
CX16_FLAG equ 2000h	  ;CX16 - 13
47
ETPRD_FLAG equ 4000h	  ;xTPR - 14
6483 mat1854 48
PDCM_FLAG equ 8000h	  ;PDCM - 15                to  add
49
DCA_FLAG equ 40000h	  ;DCA - 18   Direct Cache Access
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
318 heavyiron 54
 
55
; edx cpuid(8000_0001h)
6483 mat1854 56
SYS_FLAG equ 0800h	;11       - may be we already detect it as SEP_FLAG
57
MP_FLAG equ 80000h	;19       ???? not found in recent guides from AMD and Intel
58
NX_FLAG equ 100000h	;20
59
MMXPi_FLAG equ 400000h	;22
60
MMXn_FLAG equ 800000h	;23
61
FXSRn_FLAG equ 1000000h ;24   it is ллу+ for Cyrix
62
FFXSR_FLAG equ 2000000h ;25
63
PAGE_FLAG equ 4000000h  ;26 Page1Gb                to  add
64
TSCP_FLAG equ 8000000h	;27
65
LM_FLAG equ 20000000h	;29  EM64T
66
DNo_FLAG equ 40000000h	;30   3dNow! Ext
67
DN_FLAG equ 80000000h	;31   3dNow!
318 heavyiron 68
 
69
 
70
; ecx cpuid(8000_0001h)
71
LAHF_FLAG equ 0001h  ; LAHF   0
72
CMPL_FLAG equ 0002h    ; core multi-processing legacy mode 1
73
SVM_FLAG equ 0004h     ; secure virtual machine 2
6483 mat1854 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
82
SKINIT_FLAG equ 1000h  ;SKINIT- 12               to  add
83
WDT_FLAG equ 2000h     ;Watchdog timer - 13      to  add
318 heavyiron 84
 
85
 
86
;decoding standard features
87
 
88
decode_standard_features:
89
 
90
 xor eax,eax
91
 inc eax
92
 cpuid
93
 
94
 
6483 mat1854 95
Test0:
96
test edx, FPU_FLAG
97
jnz Test0e
318 heavyiron 98
 
6483 mat1854 99
mov dword  [FPU+6], $6F6E
100
jmp Test1
318 heavyiron 101
 
6483 mat1854 102
Test0e:
103
mov  dword [FPU+6], $736579
318 heavyiron 104
 
6483 mat1854 105
;;;;;;
106
Test1:
107
test edx, VME_FLAG
108
jnz Test1e
318 heavyiron 109
 
6483 mat1854 110
mov   dword [VME+ 7], $6F6E
111
jmp Test2
318 heavyiron 112
 
6483 mat1854 113
Test1e:
114
mov   dword [VME+ 7], $736579
318 heavyiron 115
 
6483 mat1854 116
;;;;;;
117
Test2:
118
test edx, DE_FLAG
119
jnz Test2e
318 heavyiron 120
 
6483 mat1854 121
mov   dword [DE+ 7], $6F6E
122
jmp Test3
318 heavyiron 123
 
6483 mat1854 124
Test2e:
125
mov   dword [DE+ 7], $736579
126
;;;;;;
318 heavyiron 127
 
6483 mat1854 128
Test3:
129
test edx, PSE_FLAG
130
jnz Test3e
318 heavyiron 131
 
6483 mat1854 132
mov   dword [PSE+ 8], $6F6E
133
jmp Test4
318 heavyiron 134
 
6483 mat1854 135
Test3e:
136
mov   dword [PSE+ 8], $736579
318 heavyiron 137
 
6483 mat1854 138
;;;;
139
Test4:
140
test edx, TSC_FLAG
141
jnz Test4e
318 heavyiron 142
 
6483 mat1854 143
mov   dword [TSC+ 6], $6F6E
144
jmp Test5
318 heavyiron 145
 
6483 mat1854 146
Test4e:
147
mov   dword [TSC+ 6], $736579
318 heavyiron 148
 
6483 mat1854 149
;;;;
150
Test5:
151
test edx, MSR_FLAG
152
jnz Test5e
318 heavyiron 153
 
6483 mat1854 154
mov   dword [MSR+ 7], $6F6E
155
jmp Test6
318 heavyiron 156
 
6483 mat1854 157
Test5e:
158
mov   dword [MSR+ 7], $736579
318 heavyiron 159
 
6483 mat1854 160
;;;;
161
Test6:
162
test edx, PAE_FLAG
163
jnz Test6e
318 heavyiron 164
 
6483 mat1854 165
mov   dword [PAE+ 7], $6F6E
166
jmp Test7
318 heavyiron 167
 
6483 mat1854 168
Test6e:
169
mov   dword [PAE+ 7], $736579
318 heavyiron 170
 
6483 mat1854 171
;;;;
172
Test7:
173
test edx, MCE_FLAG
174
jnz Test7e
318 heavyiron 175
 
6483 mat1854 176
mov   dword [MCE+ 8], $6F6E
177
jmp Test8
318 heavyiron 178
 
6483 mat1854 179
Test7e:
180
mov   dword [MCE+ 8], $736579
318 heavyiron 181
 
6483 mat1854 182
;;;;
183
Test8:
184
test edx, CX8_FLAG
185
jnz Test8e
318 heavyiron 186
 
6483 mat1854 187
mov   dword [CX8+ 6], $6F6E
188
jmp Test9
318 heavyiron 189
 
6483 mat1854 190
Test8e:
191
mov   dword [CX8+ 6], $736579
192
;;;;
318 heavyiron 193
 
6483 mat1854 194
Test9:
195
test edx, APIC_FLAG
196
jnz Test9e
318 heavyiron 197
 
6483 mat1854 198
mov   dword [APIC+ 7], $6F6E
199
jmp Test11
318 heavyiron 200
 
6483 mat1854 201
Test9e:
202
mov   dword [APIC+ 7], $736579
203
;;;;;
318 heavyiron 204
 
6483 mat1854 205
Test11:
206
test edx, SEP_FLAG
207
jnz Test11e
318 heavyiron 208
 
6483 mat1854 209
mov   dword [SEP+ 8], $6F6E
210
jmp Test12
318 heavyiron 211
 
6483 mat1854 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
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
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:
351
test edx, SSE_FLAG
352
jnz Test25e
353
 
354
mov   dword [SSE+ 7], $6F6E
355
jmp Test26
356
 
357
Test25e:
358
mov   dword [SSE+ 7], $736579
359
 
360
;;;;
361
Test26:
362
test edx, SSE2_FLAG
363
jnz Test26e
364
 
365
mov   dword [SSE2+ 7], $6F6E
366
jmp Test27
367
 
368
Test26e:
369
mov   dword [SSE2+ 7], $736579
370
 
371
;;;;
372
 
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:
393
;mov   dword [HTT+ 8], $736579
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
429
 
430
Standart_out:
431
 
432
ret
318 heavyiron 433
;//////////////////////////////////////////////
6483 mat1854 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
445
   jmp exitter
446
.EXN:
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
463
    mov [sse41sup],0
464
 
465
exitter1:
466
 
467
 
468
  test	ecx, $100000 ; Test bit 20
469
  jnz	.EX2; SSE42 technology is  supported
470
  jz .EXN2
471
 
472
.EX2:
473
   mov dword  [SSE42+ 10],  $736579
474
   mov dword  [SS42+ 11],  $736579
475
   mov [sse42sup], 1
476
   jmp exitter2
477
.EXN2:
478
   mov dword [SSE42+ 10], $6F6E
479
   mov dword [SS42+ 11], $6F6E
480
   mov [sse42sup],0
481
 
482
exitter2:
483
 
484
 
485
      xor eax,eax
486
      mov eax, 80000001h
487
      cpuid
488
  test	ecx, $800 ; Test bit 11
489
  jnz	.EX3; SS5 technology is  supported
490
  jz .EXN3
491
 
492
.EX3:
493
   mov dword  [SSE5+ 12],  $736579
494
   mov [sse5sup], 1
495
   jmp exitter3
496
.EXN3:
497
    mov dword [SSE5+ 12], $6F6E
498
    mov [sse5sup],0
499
 
500
exitter3:
501
 
502
ret
503
 
504
 
318 heavyiron 505
decode_extended_features:
6483 mat1854 506
      xor eax,eax
507
      inc eax
508
      cpuid
509
Tes1:
510
test ecx, SSE3_FLAG
511
jnz Tes1e
318 heavyiron 512
 
6483 mat1854 513
mov   dword [SS3+ 8], $6F6E
514
jmp Tes2
318 heavyiron 515
 
6483 mat1854 516
Tes1e:
517
mov   dword [SS3+ 8], $736579
318 heavyiron 518
 
519
 
6483 mat1854 520
Tes2:
521
test ecx, MON_FLAG
522
jnz Tes2e
318 heavyiron 523
 
6483 mat1854 524
mov   dword [MON+ 8], $6F6E
525
jmp Tes3
318 heavyiron 526
 
6483 mat1854 527
Tes2e:
528
mov   dword [MON+ 8], $736579
318 heavyiron 529
 
530
 
6483 mat1854 531
Tes3:
532
test ecx, DS_CPL_FLAG
533
jnz Tes3e
318 heavyiron 534
 
6483 mat1854 535
mov   dword [DS_CPL+ 8], $6F6E
536
jmp Tes4
318 heavyiron 537
 
6483 mat1854 538
Tes3e:
539
mov   dword [DS_CPL+ 8], $736579
318 heavyiron 540
 
6483 mat1854 541
Tes4:
542
test ecx, EST_FLAG
543
jnz Tes4e
318 heavyiron 544
 
6483 mat1854 545
mov   dword [EST+ 8], $6F6E
546
jmp Tes5
547
 
548
Tes4e:
549
mov   dword [EST+ 8], $736579
550
 
551
 
552
Tes5:
553
test ecx, TM2_FLAG
554
jnz Tes5e
555
 
556
mov   dword [TM2+ 8], $6F6E
557
jmp Tes6
558
 
559
Tes5e:
560
mov   dword [TM2+ 8], $736579
561
 
562
 
563
Tes6:
564
test ecx, CNXT_ID_FLAG
565
jnz Tes6e
566
 
567
mov   dword [CNXT_ID+ 12], $6F6E
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
614
 
615
Tes11:
616
test ecx, DCA_FLAG
617
jnz Tes11e
618
 
619
mov   dword [DCA+ 8], $6F6E
620
jmp Tes12
621
 
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:
633
mov   dword [SMX+ 8], $736579
634
 
635
Tes13:
636
test ecx, PDCM_FLAG
637
jnz Tes13e
638
 
639
mov   dword [newLabel+ 8], $6F6E
640
jmp Tes14
641
 
642
Tes13e:
643
mov   dword [newLabel+ 8], $736579
644
 
645
Tes14:
646
test ecx, x2APIC_FLAG
647
jnz Tes14e
648
 
649
mov   dword [x2APIC+ 8], $6F6E
650
jmp Tes15
651
 
652
Tes14e:
653
mov   dword [x2APIC+ 8], $736579
654
 
655
Tes15:
656
test ecx, PPCNT_FLAG
657
jnz Tes15e
658
 
659
mov   dword [PPCNT+ 12], $6F6E
660
jmp Tes16
661
 
662
Tes15e:
663
mov   dword [PPCNT+ 12], $736579
664
 
665
Tes16:
666
 
667
ret
668
 
318 heavyiron 669
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
670
decode_extended:
6483 mat1854 671
    xor   eax, eax
672
    mov   eax,$80000000
673
    cpuid
318 heavyiron 674
 
6483 mat1854 675
test eax, 80000000h
676
jnz gooodd
318 heavyiron 677
 
6483 mat1854 678
jmp baaad
318 heavyiron 679
 
6483 mat1854 680
baaad:
318 heavyiron 681
 
6483 mat1854 682
jmp Tez13
683
 
684
gooodd:
685
  xor eax, eax
686
  mov	eax, $80000001 ;// Setup extended function 8000_0001h
687
  cpuid
688
 
689
Tez1:
690
test edx, MP_FLAG
691
jnz Tez1e
692
 
693
mov   dword [MP+8], $6F6E
694
jmp Tez2
695
 
696
Tez1e:
697
mov   dword [MP+ 8], $736579
698
 
699
Tez2:
700
test edx, NX_FLAG
701
jnz Tez2e
702
 
703
mov   dword [NX+ 8], $6F6E
704
jmp Tez4
318 heavyiron 705
;jmp Tez3 we do detection in another place, because of Cyrix specific MMX+ detection
706
 
6483 mat1854 707
Tez2e:
708
mov   dword [NX+ 8], $736579
318 heavyiron 709
 
6483 mat1854 710
;Tez3:
711
;test edx, MMXPi_FLAG
712
;jnz Tez3e
318 heavyiron 713
 
6483 mat1854 714
;mov   dword [MMXPi+ 8], $6F6E
715
;jmp Tez4
318 heavyiron 716
 
717
 
6483 mat1854 718
;Tez3e:
719
;mov   dword [MMXPi+ 8], $736579
318 heavyiron 720
 
6483 mat1854 721
Tez4:
722
test edx, MMXn_FLAG
723
jnz Tez4e
318 heavyiron 724
 
6483 mat1854 725
mov   dword [MMXn+ 8], $6F6E
726
jmp Tez5
318 heavyiron 727
 
6483 mat1854 728
Tez4e:
729
mov   dword [MMXn+ 8], $736579
730
 
731
Tez5:
732
test edx, FXSRn_FLAG
733
jnz Tez5e
734
 
735
mov   dword [FXSRn+ 8], $6F6E
736
jmp Tez6
737
 
738
Tez5e:
739
mov   dword [FXSRn+ 8], $736579
740
 
741
Tez6:
742
test edx, FFXSR_FLAG
743
jnz Tez6e
744
 
745
mov   dword [FFXSR+ 12], $6F6E
746
jmp Tez7
747
 
748
Tez6e:
749
mov   dword [FFXSR+ 12], $736579
750
 
751
Tez7:
752
test edx, TSCP_FLAG
753
jnz Tez7e
754
 
755
mov   dword [TSCP+ 12], $6F6E
756
jmp Tez8
757
 
758
Tez7e:
759
mov   dword [TSCP+ 12], $736579
760
 
761
 
762
Tez8:
763
test edx, LM_FLAG
764
jnz Tez8e
765
 
766
mov   dword [LM+ 12], $6F6E
767
jmp Tez9
768
 
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
 
318 heavyiron 793
;Intel
794
 
6483 mat1854 795
Tez11:
796
test edx, SYS_FLAG
797
jnz Tez11e
318 heavyiron 798
 
6483 mat1854 799
mov   dword [SYS+ 12], $6F6E
800
jmp Tez12
318 heavyiron 801
 
6483 mat1854 802
Tez11e:
803
mov   dword [SYS+ 12], $736579
318 heavyiron 804
 
805
 
6483 mat1854 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
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:
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:
894
mov   dword [MIS+ 8], $736579
895
 
896
Tez21:
897
test ecx, 3DNP_FLAG
898
jnz Tez21e
899
 
900
;mov   dword [DNP+ 8], $6F6E
901
;jmp Tez22
902
 
903
Tez21e:
904
;mov   dword [DNP+ 8], $736579
905
 
906
Tez22:
907
test ecx, OSVW_FLAG
908
jnz Tez22e
909
 
910
mov   dword [OSVW+ 8], $6F6E
911
jmp Tez23
912
 
913
Tez22e:
914
mov   dword [OSVW+ 8], $736579
915
 
916
Tez23:
917
test ecx, SKINIT_FLAG
918
jnz Tez23e
919
 
920
mov   dword [SKINIT_+ 12], $6F6E
921
jmp Tez24
922
 
923
Tez23e:
924
mov   dword [SKINIT_+ 12], $736579
925
 
926
Tez24:
927
test ecx, WDT_FLAG
928
jnz Tez24e
929
 
930
mov   dword [WDT+ 12], $6F6E
931
jmp Tez25
932
 
933
Tez24e:
934
mov   dword [WDT+ 12], $736579
935
 
936
Tez25:
937
 
938
ret
939
 
940
;//////////////////////////////////////////////
941
decode_sse3:   ; is SS3 supported
942
        xor     eax, eax
943
        inc     eax
944
        cpuid
945
        test    ecx, 1
946
        setnz   [sse3sup]
947
        mov     eax, sse3+6
948
 
949
write_yes_no:
950
        mov     dword [eax], 'no'
951
        jz      @f
952
        mov     dword [eax], 'yes'
953
@@:
532 diamond 954
        ret
6483 mat1854 955
 
956
show_next_bit:
957
        shr     edx, 1
958
write_yes_no_cf:
959
        mov     dword [eax], 'no'
960
        jnc     @f
961
        mov     dword [eax], 'yes'
962
@@:
963
        ret