diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-01-30 13:32:39 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 13:32:39 +0100 |
commit | f06e4ec1c15691b0cfd2397ae32214fa36c90d71 (patch) | |
tree | d8191c516d3d9823c6d7a0e4ec0636137aa7fd61 /arch/x86/kernel/rtc.c | |
parent | x86: map vsyscalls early enough (diff) | |
download | linux-f06e4ec1c15691b0cfd2397ae32214fa36c90d71.tar.xz linux-f06e4ec1c15691b0cfd2397ae32214fa36c90d71.zip |
x86: read_tsc sync
make native_read_tsc() always non-speculative.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/rtc.c')
-rw-r--r-- | arch/x86/kernel/rtc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kernel/rtc.c b/arch/x86/kernel/rtc.c index c42cf1263882..276cb7073ab1 100644 --- a/arch/x86/kernel/rtc.c +++ b/arch/x86/kernel/rtc.c @@ -200,7 +200,10 @@ unsigned long long __vsyscall_fn native_read_tsc(void) { DECLARE_ARGS(val, low, high); + rdtsc_barrier(); asm volatile("rdtsc" : EAX_EDX_RET(val, low, high)); + rdtsc_barrier(); + return EAX_EDX_VAL(val, low, high); } EXPORT_SYMBOL_GPL(native_read_tsc); |