panic() cleanup.
[minix.git] / lib / libsys / read_tsc.S
blob143d30d642ea0ef506754be96bdeaade231ac929
1 /*  */
2 /* sections */
5 .globl  _read_tsc       /* read the cycle counter (Pentium and up) */
6 .text
7 /**===========================================================================* */
8 /* PUBLIC void read_tsc(unsigned long *high, unsigned long *low); */
9 /* Read the cycle counter of the CPU. Pentium and up.  */
10 .balign 16
11 _read_tsc:
12         push    %edx
13         push    %eax
14 .byte   0x0f    /* this is the RDTSC instruction  */
15 .byte   0x31    /* it places the TSC in EDX:EAX */
16         push    %ebp
17         movl    16(%esp), %ebp
18         movl    %edx, (%ebp)
19         movl    20(%esp), %ebp
20         movl    %eax, (%ebp)
21         pop     %ebp
22         pop     %eax
23         pop     %edx
24         ret
26 /**===========================================================================* */
27 /* PUBLIC void read_host_time_ns(unsigned long *high, unsigned long *low); */
28 /* access real time in ns from host in vmware. */
29 .balign 16
30 _read_host_time_ns:
31         pushl   %edx
32         pushl   %eax
33         pushl   %ecx
34         movl    $0x10001, %ecx
35 .byte   0x0f    /* this is the RDTSC instruction  */
36 .byte   0x31    /* it places the TSC in EDX:EAX */
37         pushl   %ebp
38         movl    20(%esp), %ebp
39         movl    %edx, (%ebp)
40         movl    24(%esp), %ebp
41         movl    %eax, (%ebp)
42         popl    %ebp
43         popl    %ecx
44         popl    %eax
45         popl    %edx
46         ret