Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
318 heavyiron 1
newrating:
2
 
3
cmp [FRS], 266
4
jz f266
5
cmp [FRS], 333
6
jz f333
7
cmp [FRS], 400
8
jz f400
9
 
10
f266:
11
 
12
;формулы вычисления XP-рейтинга Athlon-ов (Tbred, Barton):
13
;FSB266/256kB:   сделано
14
;XP+ (Freq<2000MHz) = 1000 + (Freq-1000)*1,5 = Freq*1.5-500
15
;XP+ (Freq>=2000MHz) = 900 + (Freq-1000)*1,5 = Freq*1.5-600
16
 
17
 
18
   cmp [total], 2000
19
   jl pal
20
 
21
    ; Рейтинг для Паломино 2000+
22
    mov eax,[total]
23
    imul eax, 3
24
    shr eax,1
25
    sub eax, 600
26
    mov [rating], eax
27
 
28
jmp vyxod
29
 
30
pal:
31
 
32
    ; Рейтинг для Паломино 2000-
33
    mov eax,[total]
34
    imul eax, 3
35
    shr eax,1
36
    sub eax, 500
37
    mov [rating], eax
38
 
39
jmp vyxod
40
 
41
 
42
f333:
43
 
44
 
45
 
46
 
47
 cmp [L2], 256
48
 jl .Th ; Thorton
49
 
50
;FSB333/512kB: сделано
51
;XP+ (Freq<2100MHz) = Freq*1.2 + 300
52
;XP+ (Freq>=2100MHz) = Freq*1.2 + 400
53
 
54
cmp [total], 2100
55
jl .r2100
56
   mov eax,[total]
57
   xor edx, edx
58
   imul eax, 600000
59
   mov	ebx, 500000
60
   div ebx
61
   mov	[rating], eax
62
   add [rating], 400
63
 
64
; Rating for Barton F<2000 MHz
65
jmp vyxod
66
 
67
.r2100:
68
    mov eax,[total]
69
    xor edx, edx
70
    imul eax, 600000
71
    mov  ebx, 500000
72
    div ebx
73
    mov  [rating], eax
74
    add [rating], 300
75
 
76
 
77
 ; Rating for Barton F>2000 MHz
78
jmp vyxod
79
 
80
;FSB333/256kB: сделано
81
;XP+ = Freq*1.2 + 100
82
 
83
.Th:
84
 
85
    mov eax,[total]
86
    xor edx, edx
87
    imul eax, 600000
88
    mov  ebx, 500000
89
    div ebx
90
    mov  [rating], eax
91
    add [rating], 100
92
 
93
 
94
;Rating for Thorton
95
 
96
 
97
jmp vyxod
98
 
99
f400:
100
 
101
 
102
;FSB400/512kB:
103
;XP+ = Freq*1.5 - 100
104
 
105
  mov eax,[total]
106
  imul eax, 3
107
  shr eax,1
108
  sub eax, 100
109
  mov [rating], eax
110
 
111
vyxod:
112
 
113
 
114
ret
115
 
116
 
117
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
118
 
119
multipl:
120
;--- вычисление коэффициента умножения -
121
; портит регистры
122
; out : CL = коэфф.умножения * 10, или 0
123
 
124
  xor  ecx, ecx
125
 
126
  cmp dword[smallvendor], 'cAMD'  ; Check for Advanced Micro Devices CPU
127
  jne  noAMD
128
  cmp  byte [f], 5
129
  jne  noAMDK6
130
  mov  eax, 68	  ; AMD-K6 (p.30)
131
  mov  ebx, 3
132
  mov  edx, 0x0C0000087
485 heavyiron 133
  mcall    ; eax - low dword
318 heavyiron 134
  and  eax, 111b
135
  mov  cl, [athloncoef3 + eax]
136
  cmp  eax, 6
137
  jne  @f
138
  cmp  byte[m], 8
139
  jae  @f
140
  mov  cl, 20
141
@@:  ret
142
 
143
noAMDK6:cmp	byte [f], 6
144
	jne	noAMDK7
145
	cmp	byte [m], 5
146
	jna	@f
147
	mov	eax, 0x80000007
148
	cpuid
149
	and	edx, 6		;  voltage ID control & frequency ID control
150
	cmp	edx, 6
151
	je	AMDK7M
152
@@:	mov	eax, 68		; Athlon/AthlonXP
153
	mov	ebx, 3
154
	mov	edx, 0x0C0010015
485 heavyiron 155
	mcall
318 heavyiron 156
	mov	ebx, eax
157
	shr	ebx, 24
158
	and	ebx, 0x0F
159
	shr	eax, 20
160
	jnc	@f
161
	add	bl, 16
162
@@:	mov	cl, [athloncoef + ebx]
163
	ret
164
 
165
AMDK7M:	mov	eax, 68		; AthonXP-M
166
	mov	ebx, 3
167
	mov	edx, 0xC0010042
485 heavyiron 168
	mcall
318 heavyiron 169
	and	eax, 0x1F
170
	mov	cl, [athlonmcoef + eax]
171
	ret
172
 
173
noAMDK7:cmp	byte [f], 0xF
174
	jne	noAMDK8
175
	mov	eax, 0x80000007
176
	cpuid
177
	and	edx, 6		;  voltage ID control & frequency ID control
178
	cmp	edx, 6
179
	je	AMDK8M
180
	mov	eax, 68		; Athon64
181
	mov	ebx, 3
182
	mov	edx, 0xC0010015
485 heavyiron 183
	mcall
318 heavyiron 184
	shr	eax, 24
185
	and	al, 0x3F
186
	shr	al, 1
187
	add	al, 4
188
	mov	dl, 10
189
	mul	dl
190
	mov	cl, al
191
	ret
192
 
193
AMDK8M:	mov	eax, 68		; Athon64-M
194
	mov	ebx, 3
195
	mov	edx, 0xC0010042
485 heavyiron 196
	mcall
318 heavyiron 197
	and	al, 0x3F
198
	shr	al, 1
199
	add	al, 4
200
	mov	dl, 10
201
	mul	dl
202
	mov	cl, al
203
	ret
204
;/////////////////////////////////////////////////////////
205
noAMD:	cmp	dword [smallvendor], 'ntel'	; Check for International Electronics CPU
206
	jne	noIntel
207
	cmp	byte[f], 0x0F
208
	jne	noIntelP4
209
	cmp	byte [t], 6
210
	jne	@f
211
	mov	eax, 68		; Pentium M
212
	mov	ebx, 3
213
	mov	edx, 0x2A
485 heavyiron 214
	mcall
318 heavyiron 215
	shr	eax, 22
216
	and	eax, 0x1F
217
	mov	dl, 10
218
	mul	dl
219
	mov	cl, al
220
	ret
221
@@:	cmp	byte [m], 2
222
	jae	@f
223
	mov	eax, 68		; Pentium 4 / Xeon (model < 2) Willamete
224
	mov	ebx, 3
225
	mov	edx, 0x2A
485 heavyiron 226
	mcall
318 heavyiron 227
	shr	eax, 8
228
	and	eax, 0x0F
229
	mov	cl, [p4coef + eax]
230
	ret
231
@@:	mov	eax, 68		; Pentium 4 / Xeon (model >= 2) NorthWood
232
	mov	ebx, 3
233
	mov	edx, 0x2C
485 heavyiron 234
	mcall
318 heavyiron 235
	shr	eax, 24
236
	and	eax, 0x1F
237
	mov	dl, 10
238
	mul	dl
239
	mov	cl, al
240
	ret
241
noIntelP4:
242
	cmp	byte[f], 6
243
	jne	noIntelP6
244
	mov	eax, 68		; Pentium Pro / Pentium II / Pentium III
245
	mov	ebx, 3
246
	mov	edx, 0x2A
485 heavyiron 247
	mcall
318 heavyiron 248
	shr	eax, 22
249
	test	al, 0x20
250
	jz	@f
251
	or	al, 0x10
252
@@:	and	eax, 0x1f
253
 
254
	cmp	byte[m], 0x06 ; ? 7
255
	ja	@f
256
	and	al, 0x0f
257
@@:
258
	mov	cl, [coppercoeff + eax]
259
	cmp	byte[m], 0x0B
260
	jb	@f
261
	mov	cl, [tualatcoeff + eax]
262
 
263
	cmp	byte[m], 0x0B
264
	je	@f
265
	mov	dl, 10		; model 0x0C - 0x0F - Dothan / Yonah  / Conroe / Merom
266
	mul	dl
267
	mov	cl, al
268
 
269
@@:	ret
270
 
271
noIntel:
272
noIntelP6:
273
noAMDK8:
274
  ret