Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5131 clevermous 1
#include "asm_i386.h"
2
 
3
.data
4
fpenv:	.long	0, 0, 0, 0, 0, 0, 0, 0
5
 
6
.text
7
.globl	C(StartMSRInterval)
8
C(StartMSRInterval):
9
	movl	$0x11,%ecx	// read the CESR
10
	.byte	0x0F
11
	.byte	0x32		// RDMSR
12
 
13
	andl	$0xFE3FFE3F,%eax	// stop both counters
14
	.byte	0x0F
15
	.byte	0x30		// WRMSR
16
 
17
	movl	4(%esp),%eax	// point counter 0 to desired event, with counters
18
	andl	$0x3F,%eax		//  still stopped
19
	movl	$0x11,%ecx
20
	.byte	0x0F
21
	.byte	0x30		// WRMSR
22
 
23
	movl	$0x12,%ecx	// set counter 0 to the value 0
24
	subl	%eax,%eax
25
	subl	%edx,%edx
26
	.byte	0x0F
27
	.byte	0x30		// WRMSR
28
 
29
	movl	4(%esp),%eax // restart counter 0 with selected event
30
	andl	$0x3F,%eax
31
	subl	%edx,%edx
32
	orl		$0xC0,%eax
33
	movl	$0x11,%ecx	// control and event select
34
	.byte	0x0F
35
	.byte	0x30		// WRMSR
36
 
37
	ret
38
 
39
.globl	C(EndMSRInterval)
40
C(EndMSRInterval):
41
	movl	$0x12,%ecx	// counter 0
42
	.byte	0x0F
43
	.byte	0x32		// RDMSR
44
 
45
	ret					// lower 32 bits of count in %eax
46
 
47
#if 0
48
	.data
49
Lxxx:	.long	0
50
 
51
	.text
52
 
53
.globl C(setstackcheck)
54
C(setstackcheck):
55
 
56
	movl	%esp,%eax
57
	subl	$0x38000,%eax
58
	movl	$0x5A5A5A5A,(%eax)
59
	movl	%eax,Lxxx
60
 
61
	ret
62
 
63
 
64
.globl C(dostackcheck)
65
C(dostackcheck):
66
 
67
	movl	Lxxx,%edx
68
	movl	$0,%eax
69
 
70
	cmpl	$0x5A5A5A5A,(%edx)
71
	jz		qqq
72
	incl	%eax
73
qqq:
74
 
75
	ret
76
#endif
77