#include <linux/compiler.h> | |
#include <linux/types.h> | |
#include "tsc.h" | |
u64 perf_time_to_tsc(u64 ns, struct perf_tsc_conversion *tc) | |
{ | |
u64 t, quot, rem; | |
t = ns - tc->time_zero; | |
quot = t / tc->time_mult; | |
rem = t % tc->time_mult; | |
return (quot << tc->time_shift) + | |
(rem << tc->time_shift) / tc->time_mult; | |
} | |
u64 tsc_to_perf_time(u64 cyc, struct perf_tsc_conversion *tc) | |
{ | |
u64 quot, rem; | |
quot = cyc >> tc->time_shift; | |
rem = cyc & (((u64)1 << tc->time_shift) - 1); | |
return tc->time_zero + quot * tc->time_mult + | |
((rem * tc->time_mult) >> tc->time_shift); | |
} | |
u64 __weak rdtsc(void) | |
{ | |
return 0; | |
} |