Commit | Line | Data |
---|---|---|
0b437860 AH |
1 | #include <linux/compiler.h> |
2 | #include <linux/types.h> | |
3 | ||
4 | #include "tsc.h" | |
5 | ||
6 | u64 perf_time_to_tsc(u64 ns, struct perf_tsc_conversion *tc) | |
7 | { | |
8 | u64 t, quot, rem; | |
9 | ||
10 | t = ns - tc->time_zero; | |
11 | quot = t / tc->time_mult; | |
12 | rem = t % tc->time_mult; | |
13 | return (quot << tc->time_shift) + | |
14 | (rem << tc->time_shift) / tc->time_mult; | |
15 | } | |
16 | ||
17 | u64 tsc_to_perf_time(u64 cyc, struct perf_tsc_conversion *tc) | |
18 | { | |
19 | u64 quot, rem; | |
20 | ||
21 | quot = cyc >> tc->time_shift; | |
22 | rem = cyc & ((1 << tc->time_shift) - 1); | |
23 | return tc->time_zero + quot * tc->time_mult + | |
24 | ((rem * tc->time_mult) >> tc->time_shift); | |
25 | } | |
a6a69db4 AH |
26 | |
27 | u64 __weak rdtsc(void) | |
28 | { | |
29 | return 0; | |
30 | } |