diff --git a/arch/x86/kernel/rtc.c b/arch/x86/kernel/rtc.c index d040840ff1b64532aff879286aca6a661bd466c3..c42cf12638823a22f1195af42d2eb5553aa0e054 100644 --- a/arch/x86/kernel/rtc.c +++ b/arch/x86/kernel/rtc.c @@ -6,6 +6,7 @@ #include #include +#include #ifdef CONFIG_X86_32 # define CMOS_YEARS_OFFS 1900 @@ -194,3 +195,12 @@ int update_persistent_clock(struct timespec now) { return set_rtc_mmss(now.tv_sec); } + +unsigned long long __vsyscall_fn native_read_tsc(void) +{ + DECLARE_ARGS(val, low, high); + + asm volatile("rdtsc" : EAX_EDX_RET(val, low, high)); + return EAX_EDX_VAL(val, low, high); +} +EXPORT_SYMBOL_GPL(native_read_tsc); diff --git a/include/asm-x86/msr.h b/include/asm-x86/msr.h index bca8c39501320fc29ee2870d73dd0f2a549cc87a..decfec4ab17c8c9d8c94ffe05bd7283f63e19139 100644 --- a/include/asm-x86/msr.h +++ b/include/asm-x86/msr.h @@ -91,13 +91,7 @@ static inline int native_write_msr_safe(unsigned int msr, return err; } -static inline unsigned long long native_read_tsc(void) -{ - DECLARE_ARGS(val, low, high); - - asm volatile("rdtsc" : EAX_EDX_RET(val, low, high)); - return EAX_EDX_VAL(val, low, high); -} +extern unsigned long long native_read_tsc(void); static inline unsigned long long native_read_pmc(int counter) {