This library includes various random and minix-specific functions included in the Minix libc. Most of them should be part of libsys, and in general it would be nice to extinguish this library over time.
42 lines
1.2 KiB
ArmAsm
42 lines
1.2 KiB
ArmAsm
/* */
|
|
/* sections */
|
|
#include <machine/asm.h>
|
|
|
|
/**===========================================================================* */
|
|
/* PUBLIC void read_tsc(unsigned long *high, unsigned long *low); */
|
|
/* Read the cycle counter of the CPU. Pentium and up. */
|
|
ENTRY(read_tsc)
|
|
push %edx
|
|
push %eax
|
|
.byte 0x0f /* this is the RDTSC instruction */
|
|
.byte 0x31 /* it places the TSC in EDX:EAX */
|
|
push %ebp
|
|
movl 16(%esp), %ebp
|
|
movl %edx, (%ebp)
|
|
movl 20(%esp), %ebp
|
|
movl %eax, (%ebp)
|
|
pop %ebp
|
|
pop %eax
|
|
pop %edx
|
|
ret
|
|
|
|
/**===========================================================================* */
|
|
/* PUBLIC void read_host_time_ns(unsigned long *high, unsigned long *low); */
|
|
/* access real time in ns from host in vmware. */
|
|
ENTRY(read_host_time_ns)
|
|
pushl %edx
|
|
pushl %eax
|
|
pushl %ecx
|
|
movl $0x10001, %ecx
|
|
.byte 0x0f /* this is the RDTSC instruction */
|
|
.byte 0x31 /* it places the TSC in EDX:EAX */
|
|
pushl %ebp
|
|
movl 20(%esp), %ebp
|
|
movl %edx, (%ebp)
|
|
movl 24(%esp), %ebp
|
|
movl %eax, (%ebp)
|
|
popl %ebp
|
|
popl %ecx
|
|
popl %eax
|
|
popl %edx
|
|
ret
|