diff options
Diffstat (limited to 'src/include/cpu/x86/tsc.h')
-rw-r--r-- | src/include/cpu/x86/tsc.h | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/include/cpu/x86/tsc.h b/src/include/cpu/x86/tsc.h index 6943b93018..ddce96bb39 100644 --- a/src/include/cpu/x86/tsc.h +++ b/src/include/cpu/x86/tsc.h @@ -41,20 +41,14 @@ static inline void multiply_to_tsc(tsc_t *const tsc, const u32 a, const u32 b) tsc->hi = ((a >> 16) * (b >> 16)) + (tsc->hi >> 16); } -static inline unsigned long long rdtscll(void) +static inline uint64_t tsc_to_uint64(tsc_t tstamp) { - unsigned long long val; - asm volatile ( - TSC_SYNC - "rdtsc" - : "=A" (val) - ); - return val; + return (((uint64_t)tstamp.hi) << 32) + tstamp.lo; } -static inline uint64_t tsc_to_uint64(tsc_t tstamp) +static inline unsigned long long rdtscll(void) { - return (((uint64_t)tstamp.hi) << 32) + tstamp.lo; + return tsc_to_uint64(rdtsc()); } /* Provided by CPU/chipset code for the TSC rate in MHz. */ |