Subversion Repositories Kolibri OS

Rev

Rev 375 | Rev 477 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 375 Rev 398
Line 16... Line 16...
16
	dd     0x0, 0x0
16
	dd     0x0, 0x0
Line 17... Line 17...
17
 
17
 
18
include 'macros.inc'
18
include 'macros.inc'
Line 19... Line 19...
19
include 'debug.inc'
19
include 'debug.inc'
20
 
20
 
21
START:
21
START:	print	'Please wait'
22
	mov	eax, 19		; ôóíêöèÿ ïóñòûøêà
22
	; ÷åðåç áûñòðûé âûçîâ (SYSENTER)
23
	push	ecx
23
test1:	mov	eax, 1
24
	syscall
-
 
25
	pop	ecx
24
	cpuid
26
	
25
	test	edx, 0x800
-
 
26
	jnz	.ok
27
	
27
	dps	'unsupported     '
28
	print	'! Alive !'
28
	jmp	.end
29
 
29
.ok:	
30
	xor	eax, eax
30
	xor	eax, eax
31
	cpuid
31
	cpuid
32
	rdtsc
32
	rdtsc
Line 33... Line -...
33
	mov	[old_tsc], eax
-
 
34
	mov	[old_tsc + 4], edx
33
	mov	[old_tsc], eax
35
	
34
	mov	[old_tsc + 4], edx
36
; ÷åðåç áûñòðûé âûçîâ
35
	
37
test1:	mov	ebx, 0x100000
36
	mov	ebx, 0x100000
38
	mov	dword[SYSENTER_VAR], .ret_p
37
	mov	dword[SYSENTER_VAR], .ret_p
39
	mov	[SYSENTER_VAR + 4], esp
38
	mov	[SYSENTER_VAR + 4], esp
Line 51... Line 50...
51
	dec	edx
50
	dec	edx
52
@@:	sub	eax, [old_tsc]
51
@@:	sub	eax, [old_tsc]
53
	sub	edx, [old_tsc + 4]
52
	sub	edx, [old_tsc + 4]
54
	debug_print_hex edx
53
	debug_print_hex edx
55
	debug_print_hex eax
54
	debug_print_hex eax
56
	print	' <- Fast call'
55
.end:	print	' <- Fast call (SYSENTER)'
57
 
-
 
Line -... Line 56...
-
 
56
	
-
 
57
	;----------------------------------------------
-
 
58
	; ÷åðåç áûñòðûé âûçîâ (SYSCALL)
-
 
59
test2:	xor	eax, eax
-
 
60
	cpuid
-
 
61
	cmp	ecx, "cAMD"
-
 
62
	je	.ok
-
 
63
.nf:	dps	'unsupported     '
-
 
64
	jmp	.end
-
 
65
.ok:	mov	eax, 0x80000001
-
 
66
	cpuid
-
 
67
	test	edx, 0x800  ; bit_11 - SYSCALL/SYSRET support
Line 58... Line 68...
58
	
68
	jz	.nf
59
	
69
	
60
	xor	eax, eax
70
	xor	eax, eax
61
	cpuid
71
	cpuid
62
	rdtsc
72
	rdtsc
-
 
73
	mov	[old_tsc], eax
-
 
74
	mov	[old_tsc + 4], edx
-
 
75
	
-
 
76
	mov	ebx, 0x100000
-
 
77
	align	32
-
 
78
.nxt:	mov	eax, 19
-
 
79
	push	ecx
-
 
80
	syscall
-
 
81
	pop	ecx
-
 
82
	
-
 
83
.ret_p: dec	ebx
-
 
84
	jnz	.nxt
-
 
85
 
-
 
86
	xor	eax, eax
-
 
87
	cpuid
-
 
88
	rdtsc
-
 
89
	cmp	eax, [old_tsc]
-
 
90
	jnb	@f
-
 
91
	dec	edx
-
 
92
@@:	sub	eax, [old_tsc]
-
 
93
	sub	edx, [old_tsc + 4]
-
 
94
	debug_print_hex edx
-
 
95
	debug_print_hex eax
63
	mov	[old_tsc], eax
96
.end:	print	' <- Fast call (SYSCALL)'
-
 
97
	;----------------------------------------------
-
 
98
	; ÷åðåç øëþç ïðåðûâàíèÿ
-
 
99
	xor	eax, eax
-
 
100
	cpuid
-
 
101
	rdtsc
-
 
102
	mov	[old_tsc], eax
64
	mov	[old_tsc + 4], edx
103
	mov	[old_tsc + 4], edx
65
; ÷åðåç øëþç ïðåðûâàíèÿ
104
	
66
test2:	mov	ebx, 0x100000
105
test3:	mov	ebx, 0x100000
67
	align	32
106
	align	32
68
.nxt:	mov	eax, 19 	; ôóíêöèÿ ïóñòûøêà
107
.nxt:	mov	eax, 19 	; ôóíêöèÿ ïóñòûøêà
69
	int	0x40
108
	int	0x40