revert CPUID.ASM to r6496

git-svn-id: svn://kolibrios.org@6499 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
CleverMouse 2016-08-23 19:31:57 +00:00
parent 1049bcf59a
commit c6db9a29e8

View File

@ -1,12 +1,12 @@
;******************************************************************************
; project name: CPUID *
; platform: KolibriOS, x86 (IA-32), x86-64 achitectures *
; compiler: flat assembler 1.71.22 *
; version: 2.43 *
; last update: 15 Ausust 2016 *
; compiler: flat assembler 1.70.03 *
; version: 2.29 *
; last update: 12 October 2014 *
; maintained by: Sergey Kuzmin aka Wildwest *
; e-mail: kuzmin_serg@list.ru *
; forum topic: http://board.kolibrios.org/viewtopic.php?f=42&t=594 *
; site: http://coolthemes.narod.ru/files.html *
; license: Copyright 2004-2014 Sergey Kuzmin and co-authors *
; Rules: *
; 1)you can use pieces of code in your project, but should *
@ -15,7 +15,7 @@
; your changes to the maintainer or make about post changes *
; at forum http://board.kolibrios.org/viewtopic.php?f=42&t=594*
;-----------------------------------------------------------------------------*
; Comments are in English *
; English comments *
;------------------------------------------------------------------------------
use32
org 0x0
@ -42,7 +42,7 @@ include 'variable.inc'
@use_library
START: ;
START:
mcall 68,11
mcall 66,1,1
@ -432,23 +432,22 @@ mov [L2],ecx
;CACHE3: edx provides l3
;mov eax, 80000006h
; cpuid
mov eax, 80000006h
cpuid
;movzx eax, cl ;mov cl to eax, zero extend; cl is counter reg for loop,shifts
;mov dword[linel3], eax
movzx eax, cl ;mov cl to eax, zero extend; cl is counter reg for loop,shifts
mov dword[linel3], eax
;push edx
;shr edx, 12+1
;and edx, 0x7
;mov eax, 1
;shl eax, cl
;mov dword [wayl3], eax
;pop edx
;shr edx, 18
;mov [L3],ecx
push edx
shr edx, 12+1
and edx, 0x7
mov eax, 1
shl eax, cl
mov dword [wayl3], eax
pop edx
shr edx, 18
mov [L3],ecx
cmp [f], $5
jz .fiv
@ -573,88 +572,69 @@ AA:
fif: ; AMD-64 Family=15
mov [nomultiplier], 1 ;dont detect multipl for new AMD
;here is a need to rewrite detection of AMD F-th family according to "Revision Guide for
;AMD AthlonTM 64 and AMD OpteronTM Processors" 25759.pdf
; checking sse3 for new AMD's is needed
cmp [m],$1 ; Dual-core Opteron
cmp [m],$1 ;Dual-core Opteron
jz AF1.
cmp [m],$3 ; Toledo 1024 0.09
cmp [m],$3 ;Toledo 1024 0.09
jz AF3.
cmp [m],$4 ;Athlon 64 Mobile Athlon 64 FX ClawHammer (1024) 0.13
jz AF4.
cmp [m],$5 ; Opteron Athlon 64 FX 0.13 (1024)
cmp [m],$5 ;Opteron Athlon 64 FX 0.13 (1024)
jz AF5.
cmp [m],$7 ;Athlon 64 Athlon 64 FX Clawhammer(1024) 0.13 Sledgehammer(1024) 0.13
cmp [m],$7 ;Athlon 64 Athlon 64 FX Clawhammer(1024) 0.13 Sledgehammer(1024) 0.13 // SSE3+ SanDiego(1024)
jz AF7.
cmp [m],$8 ; Athlon 64 Mobile Athlon 64 FX ClawHammer (1024) 0.13
cmp [m],$8 ;Athlon 64 Mobile Athlon 64 FX ClawHammer (1024) 0.13
jz AF8.
cmp [m],$B ; Athlon 64
cmp [m],$B ;Athlon 64
jz AFB.
cmp [m],$C ;Athlon 64 Newcastle(512) 0.13
cmp [m],$C ;Athlon 64 Newcastle(512) 0.13 Sempron> Paris (256) 0.13 |SSE3+ Sempron > Palermo FC0 0.09 // (Venice)
jz AFC.
cmp [m],$E ; Athlon 64
cmp [m],$E ;Athlon 64
jz AFE.
cmp [m],$F ; Athlon 64 Winchester(512) |SSE3+ SanDiego(1024) Venice (512) Palermo (256) 0.09
cmp [m],$F ;Athlon 64 Winchester(512) |SSE3+ SanDiego(1024) Venice (512) Palermo (256) 0.09
jz AFF.
jmp next_generation
ten: ;family = 10h
;Opteron (Barcelona)
cmp [m],$2 ;model 2, stepping 1, Opteron processor 2347
cmp [m],$2
jz AB23.
cmp [m], $8 ;model 2, stepping 2, opteron processor 8356
cmp [m], $8
jz AB83.
;Phenom X4 (9-series) (Agena)
cmp [m], $9
jz AB9. ; 4 cores, cache 4x64
;Phenom X3 (8-series) (Toliman)
cmp [m], $2 ;3 cores, cache 3x63
jz AB9.
cmp [m], $2
jz AB8check2.
AB8check2.:
cmp [s],03h
jz AB8right2.
;Athlon 6-series
cmp [m],$2
jz athlonCheck
athlonCheck: ;stepping 03h, Athlon X2 7450 ; DONE
athlonCheck:
cmp [s],03h
jz athlonKuma
;Athlon X2 (Rana)
cmp [m], $5 ;Model 5, 05h, stepping 3, 03h, AMD Athlon(tm) II X3
cmp [m], $5
jz AB4.
;Opteron (Budapest) 0.065 micron, Core stepping(s)
cmp [m],$1 ;AMD Opteron 1354 (rev. B3) specifications
jz AB1. ;model 2 02h, stepping 3 03h
;Opteron (Shanghai) 0.045 micron, Cores
cmp [m],$1
jz AB1.
cmp [m],$4
jz AB8check.
AB8check.:
cmp [s],02h ;2387
cmp [s],02h
jz ABC2.
cmp [s],01h ;8300
cmp [s],01h
jz ABC3.
;Opteron (Magny-Cours)
cmp [m], $9
jz AB6.
;Athlon II X2 0.045 micron
cmp [m], $2
jz AB8check.
;Turion II (Caspian)
cmp [m], 06h
jz ABM.
@ -871,17 +851,13 @@ mov esi, AFCsp
;-----------------------------------------------
Intel:
mov [codeN], $1
Text 75,70,0x00000000,Inteln, Intelnlen-Inteln ;75,70
mov esi, IntelnNew ;un comment this four lines
Text 75,70,0x00000000,Inteln, Intelnlen-Inteln
mov esi, IntelnNew
mov edi, saveproc
call concatname
mov esi, intel
call load_gif
PutImage 135,107,201,49,img_area+8 ;this one
;PutImage 125,107,201,49,img_area+8
; place size
PutImage 135,107,201,49,img_area+8
det:
cmp [f], $5
@ -1151,9 +1127,9 @@ mov esi, P6F
;06Ex - Pentium M Yonah 0.065
;06Fx - Pentium D Conroe 0.065, Xeon Woodcrest, Celeron D AllenDale, Core 2 Kentsfield
NEWintel: ;http://www.cpu-world.com/info/Intel/Intel_Core_i7.html
NEWintel:
cmp [em],$3A ;IvyBridge ; only one
cmp [em],$3A ;IvyBridge
jz I3A
cmp [em],$2A ;SandyBridge
jz I2A
@ -1162,7 +1138,7 @@ NEWintel: ;http://www.cpu-world.com/info/Intel/Intel_Core_i7.html
cmp [em],$25 ;Arrandale/Clarksdale
jz I25
cmp [em],$2C ;Gulftown/Westmere-EP
jz I2C
jz I2C ;westmere-EP stepping B1 -> micron 0.032
cmp [em],$2F ;Westmere-EX
jz I2F
cmp [em],$1E ;Clarksfield/Lynnfield/Jasper Forest
@ -1193,7 +1169,7 @@ NEWintel: ;http://www.cpu-world.com/info/Intel/Intel_Core_i7.html
jz I26
cmp [em],$1C ;Pineview/Silverthorne
jz I1C
jmp no_known
jnz no_known
Inewunknown:
jmp MMXtest
@ -1226,10 +1202,10 @@ call concatname
jmp MMXtest
I25:
;Text 110,70,0x00000000,P25, P25len-P25
mov [micron], 32
;Text 110,70,0x00000000,P25, P25len-P25
mov [cname], P25 ;P25
mov esi, P25 ;un comment this four lines
mov esi, P25
mov edi, saveproc + 0x10 ;12
call concatname
jmp MMXtest
@ -1360,7 +1336,6 @@ mov edi, saveproc + 0x10
call concatname
jmp MMXtest
I1C:
mov [micron], 32
;Text 110,70,0x00000000,P1C, P1Clen-P1C
@ -1375,13 +1350,12 @@ call concatname
sev: ;Family=7
.IS0:
Text 15, 190,0x00000000,cache, cachelen-cache ;?
mov [micron], 18
Text 15, 190,0x00000000,cache, cachelen-cache
mov [micron], 18
Text 110,70,0x00000000,PS0, PS0len-PS0
mov esi, PS0
mov edi, saveproc + 0x6
call concatname
mov edi, saveproc + 0x6
call concatname
jmp MMXtest
fift: ;Family=15
@ -1515,6 +1489,7 @@ Text 15, 190,0x00000000,cache, cachelen-cache
call load_gif
PutImage 135,107,201,49,img_area+8
cmp [f], $5
jz .fivv
cmp [f], $6
@ -1675,7 +1650,8 @@ fivC: ;Family=5
mov esi, idt
call load_gif
PutImage 135,107,201,49,img_area+8
;PutImage 125,107,201,49,img_area+8
; place size
Text 75,70,0x00000000,IDTn, IDTnlen-IDTn
mov esi, IDTn
@ -1709,6 +1685,7 @@ sixC: ;Family=6
call load_gif
PutImage 135,107,201,49,img_area+8
Text 75,70,0x00000000,Centaurn, Centaurnlen-Centaurn
mov esi, Centaurn
mov edi, saveproc
@ -1762,7 +1739,6 @@ mov esi, Tranmsmetan
call load_gif
PutImage 135,107,201,49,img_area+8
; cache detection routine - it is the same as for AMD (almost)
;CACHE1:
mov eax, 80000005h
@ -1840,9 +1816,14 @@ Text 15, 190,0x00000000,cache, cachelen-cache
mov esi, vortex
call load_gif
PutImage 135,107,201,49,img_area+8
;PutImage 130,127,201,49,img_area+8
; place size
cmp [f], $5
jz .V54 ;fivvtx
;.fivvtx: ;Family=5
; cmp [m],$4
; jz .V54
.V54:
mov [micron], 13
mov [L1i], 16
@ -2015,10 +1996,7 @@ event_wait:
mov [ram_size_t], eax
Text 115,350,0x00000000,ram, ramlen-ram
;Text 300,350,,mb, mblen-mb
Number 200,350,0,4,dword [ram_size_a],0x000000
Number 270,350,,,dword [ram_size_t]
@ -2118,8 +2096,8 @@ still_2:
jmp still_2 ;
key_2:
mcall
key_2: ;
mcall ;
jmp still_2 ;
button_2: ;
@ -2137,11 +2115,16 @@ still_2:
draw_window_2:
;call prepare_text_area
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,1h ; 1, start of draw
mcall
Window 250,250,420,520, 0x33FFFFFF, 0x805080d0, standard ;460
; place size
Text 15, 10,0x00000000, STDCA, STDCAlen-STDCA
Text 215, 10,, EXTCA, EXTCAlen-EXTCA
@ -2220,10 +2203,10 @@ Text 115,275,,LAF, LAFlen-LAF
Text 115,295,,SSSE3, SSSE3len-SSSE3
Text 115,315,,MCR8, MCR8len-MCR8
;added
Text 115,335,0x00000000,EAS, EASlen-EAS ;115,335
Text 115,375,0x00000000,DNP, DNPlen-DNP ;115,375
Text 115,335,0x00000000,EAS, EASlen-EAS
Text 115,375,0x00000000,DNP, DNPlen-DNP
Text 315,375,0x00000000,SSE5, SSE5len-SSE5
@ -2248,7 +2231,7 @@ Text 315,275,,DN, DNlen-DN
Text 215,315,,CMPL, CMPLlen-CMPL
Text 315,315,0x00000000,SS42,SS42len-SS42
Text 315,335,0x00000000,PPCNT,PPCNTlen-PPCNT
Text 315,295,0x00000000,SSE4A,SSE4Alen-SSE4A ;try here
Text 315,295,0x00000000,SSE4A,SSE4Alen-SSE4A
Text 315,355,0x00000000,SKINIT_,SKINIT_len-SKINIT_
too:
@ -2259,7 +2242,7 @@ Text 130,415,,kbpersec, kbperseclen-kbpersec
DrawLine 10, 80, 400, 400, 0x8080FF
Text 90,400,0x80000000,performancestr, 0
Text 90,400,0x80000000,performancestr, 0
DrawLine 322, 400, 400, 400, 0x8080FF
DrawLine 10, 10, 400, 490, 0x8080FF
DrawLine 400, 400, 400, 490, 0x8080FF
@ -2341,21 +2324,21 @@ draw_window:
Window 150,150,350,430, 0x34FFFFFF, 0x805080d0, title
; place size
Button 15,345,92,23,2+0x40000000,0x03FFFFFF ;Button 15,330,92,23,2+0x40000000,0x03FFFFFF ; button "press for more"
Button 15,345,92,23,2+0x40000000,0x03FFFFFF ; button "press for more"
mov esi, knopka
mov edi, img_area2
call load_gif2
PutImage 15,345,93,24,img_area2+8 ;PutImage 15,330,93,24,img_area2+8 ; image "press for more"
PutImage 15,345,93,24,img_area2+8 ; image "press for more"
; place size
Button 15,380,92,23,3+0x40000000,0x03FFFFFF ; button "save" ;370
Button 15,380,92,23,3+0x40000000,0x03FFFFFF ; button "save"
mov esi, knopka2
mov edi, img_area3
call load_gif2
PutImage 15,380,93,24,img_area3+8 ; image "save" ;370
PutImage 15,380,93,24,img_area3+8 ; image "save"
; place size
mov eax,12
@ -2374,12 +2357,15 @@ PutImage 15,345,93,24,img_area2+8 ;PutImage 15,330,93,24,img_area2+8 ; image "
cmp [f], $6
jne cont
; Button 240,85,69,15,3,0x030000FF ; button for rating
; Text 245,90,0x00FFFFFF,FR, FRlen-FR ; text at button
call newrating; !!!!
cont:
Text 15,50,0x00000000,tsum, tsumlen-tsum ;
;Number 82,50,0,4,dword [total],0x000000; MHz
;Number 82,50,0,4,dword [total],0x000000; MHz
mov esi, total
mov edi, tsum + 0xB ;0xA
call savenumber
@ -2406,7 +2392,7 @@ PutImage 15,345,93,24,img_area2+8 ;PutImage 15,330,93,24,img_area2+8 ; image "
;Number 110,110,1*256,2,dword [ef]
mov esi, ef
mov edi, fam + 0xF ;0xE
mov edi, fam + 0xE ;0x9
call savenumber
;Number 110,130,,,dword [em]
@ -2464,17 +2450,17 @@ PutImage 15,345,93,24,img_area2+8 ;PutImage 15,330,93,24,img_area2+8 ; image "
mov edi, cache2 + 0xa
call savenumber
;Number 75,190,,,dword [ L1i]
;Number 75,190,,,dword [ L1i]
mov esi, L1i
mov edi, cache + 0xa
call savenumber
;Number 41,210,0,4,dword[L2]
;Number 41,210,0,4,dword[L2]
mov esi, L2
mov edi, cache3 + 0x4 ;0x3
call savenumber
;Number 35,230,0,5,dword[L3]
;Number 35,230,0,5,dword[L3]
mov esi, L3
mov edi, cache4 + 0x4 ;0x3
call savenumber
@ -2500,10 +2486,9 @@ PutImage 15,345,93,24,img_area2+8 ;PutImage 15,330,93,24,img_area2+8 ; image "
red2:
;;;;;;;;;;;;;;;;;;;;;;;;
goon:
;call PROCCORE
call decodebrand
typedetect:
@ -2531,13 +2516,12 @@ PutImage 15,345,93,24,img_area2+8 ;PutImage 15,330,93,24,img_area2+8 ; image "
Text 275,290,0x00000000,HTT, HTTlen-HTT
Text 275,310,,sse3, sse3len-sse3
;try here
Text 175,290,0x00000000,SSE41, SSE41len-SSE41
Text 175,310,0x00000000,SSE42, SSE42len-SSE42
Text 175,330,0x00000000,SSE5, SSE5len-SSE5
Text 15,70,,name, namelen-name
Text 15,70,,name, namelen-name
Text 15,290,,MMXs, MMXslen-MMXs
Text 15,310,,SSE, SSElen-SSE
Text 95,310,,SSE2, SSE2len-SSE2
@ -2556,9 +2540,7 @@ PutImage 15,345,93,24,img_area2+8 ;PutImage 15,330,93,24,img_area2+8 ; image "
Text 15,170,0x00000000,cache2, cache2len-cache2
Text 15,210,,cache3, cache3len-cache3
Text 15,230,,cache4, cache4len-cache4
Text 110,70,0x00000000,dword[cname], 40
call load_gif
cmp [nomultiplier], $1
@ -2584,7 +2566,6 @@ Number 289,30,0,2,dword [freqll]
cmp [codeN], $6
je codeNVortex
codeNIntel:
Text 75,70,0x00000000,Inteln, Intelnlen-Inteln
mov esi, intel
@ -2713,7 +2694,7 @@ prepare_text_area:
cmp [nomultiplier], $1
je noMult
jne detMulti
;jne detFreq
detMulti:
mov esi,multil
@ -2884,6 +2865,7 @@ prepare_text_area:
mov esi, SSE
call addstring
mov esi, SSn
call addstring
@ -3007,10 +2989,8 @@ prepare_text_area:
mov esi, WDT
call addstring
ret
addstring:
mov edi, [store_text_area_end]
xor eax, eax
@ -3096,15 +3076,14 @@ ret
load_gif:
mov edi, img_areasss
mov edi, img_area
load_gif2:
COLOR_ORDER equ MENUETOS
; DATA AREA
title db 'CPUID 2.43 by S.Kuzmin & the KolibriOS team',0
title db 'CPUID 2.29 by S.Kuzmin & the KolibriOS team',0
stm:
db 'Internal name:', 0
@ -3440,6 +3419,7 @@ instructlen:
standard db 'Standard and Extended features plus Performance test',0
STDCA:
db 'Highest STD call is ',0
@ -3491,6 +3471,8 @@ cacheP4:
cacheP4len:
typen:
if lang eq it
@ -3589,7 +3571,6 @@ HTT:
HTTlen:
HTTn:
db 'HTT: ',0
@ -3597,7 +3578,6 @@ HTTn:
HTTnlen:
sse3:
db 'SSE3: ',0
@ -3628,12 +3608,8 @@ nowp:
nowplen:
;-Type
t1 db 'OEM',0
t2 db 'Overdrive',0
@ -3860,10 +3836,11 @@ db 'Sandy Bridge',0
P2Alen:
P2D:
db 'Sandy bridge-E',0 ; stepping M1, micron 0.032
db 'Sandy bridge-E',0
P2Dlen:
P25:
db 'Arrandale',0
P25len:
@ -4065,7 +4042,7 @@ AF4len:
AF5:
db 'Caspian',0
db 'Opteron/Athlon 64 FX (SledgeHammer)',0
AF5len:
@ -4231,16 +4208,6 @@ coppercoeff db 50, 30, 40, 20, 55, 35, 45, 25, 35, 70, 80, 60, 20, 75, 15, 65
tualatcoeff db 120, 35, 35, 40, 55, 35, 115, 35, 160, 70, 80, 60, 40, 75, 35, 65, 90, 110, 35, 35, 95, 35, 85, 35, 35, 35, 130, 100, 140, 35, 150, 105
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; include images and unpacking- and hasharea
;
include 'logos.inc' ; include file where gif's are stored
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
I_END:
@ -4480,7 +4447,6 @@ linel3 dd ?
che db ? ; numbers of calls for Intel caches detection
;;added
cname dd ?
codeN dd ?
@ -4495,6 +4461,8 @@ mynamelen:
align 4
thread2_stack_area rb 64
thread2_esp = $