28 #include <l4/sys/l4int.h>
39 #define L4_TSC_INIT_AUTO 0
40 #define L4_TSC_INIT_KERNEL 1
41 #define L4_TSC_INIT_CALIBRATE 2
192 (
".byte 0x0f, 0x31 \n\t"
193 "mov $0xffffffff, %%rcx \n\t"
194 "and %%rcx,%%rax \n\t"
195 "shlq $32,%%rdx \n\t"
196 "orq %%rdx,%%rax \n\t"
212 __asm__ __volatile__ (
214 "mov $0xffffffff, %%rcx \n\t"
215 "and %%rcx,%%rax \n\t"
216 "shlq $32,%%rdx \n\t"
217 "orq %%rdx,%%rax \n\t"
219 "=a" (v),
"=c"(dummy)
234 __asm__ __volatile__ (
236 "mov $0xffffffff, %%rcx \n\t"
237 "and %%rcx,%%rax \n\t"
238 :
"=a" (x),
"=c"(dummy)
252 __asm__ __volatile__ (
253 ".byte 0x0f, 0x31\n\t"
268 "shrd $27, %%rdx, %%rax \n\t"
269 :
"=a" (ns),
"=d"(dummy)
282 "shrd $32, %%rdx, %%rax \n\t"
283 :
"=a" (ns),
"=d" (dummy)
295 "shrd $27, %%rdx, %%rax \n\t"
296 "xorq %%rdx, %%rdx \n\t"
298 :
"=a" (*s),
"=&d" (*ns)
299 :
"a" (tsc),
"r" ((
l4_uint64_t)l4_scaler_tsc_to_ns),
311 "shrd $27, %%rdx, %%rax \n\t"
312 :
"=a" (tsc),
"=d" (dummy)
void l4_tsc_to_s_and_ns(l4_cpu_time_t tsc, l4_uint32_t *s, l4_uint32_t *ns)
Convert time stamp to s.ns value.
l4_uint32_t l4_get_hz(void)
Get CPU frequency in Hz.
l4_uint64_t l4_tsc_to_ns(l4_cpu_time_t tsc)
Convert time stamp to ns value.
l4_uint64_t l4_tsc_to_us(l4_cpu_time_t tsc)
Convert time stamp into micro seconds value.
l4_cpu_time_t l4_rdtsc(void)
Read current value of CPU-internal time stamp counter.
l4_cpu_time_t l4_ns_to_tsc(l4_uint64_t ns)
Convert nano seconds into CPU ticks.
l4_uint32_t l4_tsc_init(int constraint, l4_kernel_info_t *kip)
Initialize scaler for TSC calibrations.
l4_uint32_t l4_calibrate_tsc(l4_kernel_info_t *kip)
Calibrate scalers for time stamp calculations.
void l4_busy_wait_us(l4_uint64_t us)
Wait busy for a small amount of time.
l4_uint32_t l4_rdpmc_32(int ecx)
Return the least significant 32 bit of a performance counter.
l4_uint64_t l4_rdpmc(int ecx)
Return current value of CPU-internal performance measurement counter.
void l4_busy_wait_ns(l4_uint64_t ns)
Wait busy for a small amount of time.
#define L4_TSC_INIT_AUTO
Automatic init.
l4_uint32_t l4_rdtsc_32(void)
Read the lest significant 32 bit of the TSC.
L4 compiler related defines.
#define EXTERN_C_BEGIN
Start section with C types and functions.
#define EXTERN_C_END
End section with C types and functions.
l4_uint64_t l4_cpu_time_t
CPU clock type.
unsigned int l4_uint32_t
Unsigned 32bit value.
unsigned long long l4_uint64_t
Unsigned 64bit value.
#define L4_CV
Define calling convention.
L4 Kernel Interface Page.
Kernel Info Page access functions.