diff options
Diffstat (limited to 'tools/perf/arch/x86/util/tsc.c')
| -rw-r--r-- | tools/perf/arch/x86/util/tsc.c | 31 | 
1 files changed, 10 insertions, 21 deletions
diff --git a/tools/perf/arch/x86/util/tsc.c b/tools/perf/arch/x86/util/tsc.c index 40021fa3129b..fd2868490d00 100644 --- a/tools/perf/arch/x86/util/tsc.c +++ b/tools/perf/arch/x86/util/tsc.c @@ -6,29 +6,9 @@  #include "../../perf.h"  #include <linux/types.h>  #include "../../util/debug.h" +#include "../../util/tsc.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 & ((1 << tc->time_shift) - 1); -	return tc->time_zero + quot * tc->time_mult + -	       ((rem * tc->time_mult) >> tc->time_shift); -} -  int perf_read_tsc_conversion(const struct perf_event_mmap_page *pc,  			     struct perf_tsc_conversion *tc)  { @@ -57,3 +37,12 @@ int perf_read_tsc_conversion(const struct perf_event_mmap_page *pc,  	return 0;  } + +u64 rdtsc(void) +{ +	unsigned int low, high; + +	asm volatile("rdtsc" : "=a" (low), "=d" (high)); + +	return low | ((u64)high) << 32; +}  | 
