x86: clean up rdtsc_barrier() use
Impact: cleanup Move rdtsc_barrier() use to vsyscall_64.c where it's relied on, and point out its role in the context of its use. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
895e031707
commit
cb9e35dce9
|
@ -44,11 +44,7 @@ static __always_inline cycles_t vget_cycles(void)
|
|||
if (!cpu_has_tsc)
|
||||
return 0;
|
||||
#endif
|
||||
rdtsc_barrier();
|
||||
cycles = (cycles_t)__native_read_tsc();
|
||||
rdtsc_barrier();
|
||||
|
||||
return cycles;
|
||||
return (cycles_t)__native_read_tsc();
|
||||
}
|
||||
|
||||
extern void tsc_init(void);
|
||||
|
|
|
@ -128,7 +128,16 @@ static __always_inline void do_vgettimeofday(struct timeval * tv)
|
|||
gettimeofday(tv,NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Surround the RDTSC by barriers, to make sure it's not
|
||||
* speculated to outside the seqlock critical section and
|
||||
* does not cause time warps:
|
||||
*/
|
||||
rdtsc_barrier();
|
||||
now = vread();
|
||||
rdtsc_barrier();
|
||||
|
||||
base = __vsyscall_gtod_data.clock.cycle_last;
|
||||
mask = __vsyscall_gtod_data.clock.mask;
|
||||
mult = __vsyscall_gtod_data.clock.mult;
|
||||
|
|
Loading…
Reference in New Issue