xref: /minix3/minix/lib/libc/arch/i386/read_tsc.S (revision bad58c9c5145c5fa2a65ce5ca37ceebbbd315e2d)
1*bad58c9cSBen Gras/*  */
2*bad58c9cSBen Gras/* sections */
3*bad58c9cSBen Gras#include <machine/asm.h>
4*bad58c9cSBen Gras
5*bad58c9cSBen Gras/**===========================================================================* */
6*bad58c9cSBen Gras/* PUBLIC void read_tsc(unsigned long *high, unsigned long *low); */
7*bad58c9cSBen Gras/* Read the cycle counter of the CPU. Pentium and up.  */
8*bad58c9cSBen GrasENTRY(read_tsc)
9*bad58c9cSBen Gras	push	%edx
10*bad58c9cSBen Gras	push	%eax
11*bad58c9cSBen Gras.byte	0x0f	/* this is the RDTSC instruction  */
12*bad58c9cSBen Gras.byte	0x31	/* it places the TSC in EDX:EAX */
13*bad58c9cSBen Gras	push	%ebp
14*bad58c9cSBen Gras	movl	16(%esp), %ebp
15*bad58c9cSBen Gras	movl	%edx, (%ebp)
16*bad58c9cSBen Gras	movl	20(%esp), %ebp
17*bad58c9cSBen Gras	movl	%eax, (%ebp)
18*bad58c9cSBen Gras	pop	%ebp
19*bad58c9cSBen Gras	pop	%eax
20*bad58c9cSBen Gras	pop	%edx
21*bad58c9cSBen Gras	ret
22*bad58c9cSBen Gras
23*bad58c9cSBen Gras/**===========================================================================* */
24*bad58c9cSBen Gras/* PUBLIC void read_host_time_ns(unsigned long *high, unsigned long *low); */
25*bad58c9cSBen Gras/* access real time in ns from host in vmware. */
26*bad58c9cSBen GrasENTRY(read_host_time_ns)
27*bad58c9cSBen Gras        pushl   %edx
28*bad58c9cSBen Gras        pushl   %eax
29*bad58c9cSBen Gras        pushl   %ecx
30*bad58c9cSBen Gras        movl    $0x10001, %ecx
31*bad58c9cSBen Gras.byte	0x0f	/* this is the RDTSC instruction  */
32*bad58c9cSBen Gras.byte	0x31	/* it places the TSC in EDX:EAX */
33*bad58c9cSBen Gras        pushl   %ebp
34*bad58c9cSBen Gras        movl    20(%esp), %ebp
35*bad58c9cSBen Gras        movl    %edx, (%ebp)
36*bad58c9cSBen Gras        movl    24(%esp), %ebp
37*bad58c9cSBen Gras        movl    %eax, (%ebp)
38*bad58c9cSBen Gras        popl    %ebp
39*bad58c9cSBen Gras        popl    %ecx
40*bad58c9cSBen Gras        popl    %eax
41*bad58c9cSBen Gras        popl    %edx
42*bad58c9cSBen Gras        ret
43