diff options
Diffstat (limited to 'arch/x86/lib/delay.c')
| -rw-r--r-- | arch/x86/lib/delay.c | 3 | 
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/lib/delay.c b/arch/x86/lib/delay.c index f4568605d7d5..ff485d361182 100644 --- a/arch/x86/lib/delay.c +++ b/arch/x86/lib/delay.c  | |||
| @@ -55,8 +55,10 @@ static void delay_tsc(unsigned long loops) | |||
| 55 | 55 | ||
| 56 | preempt_disable(); | 56 | preempt_disable(); | 
| 57 | cpu = smp_processor_id(); | 57 | cpu = smp_processor_id(); | 
| 58 | rdtsc_barrier(); | ||
| 58 | rdtscl(bclock); | 59 | rdtscl(bclock); | 
| 59 | for (;;) { | 60 | for (;;) { | 
| 61 | rdtsc_barrier(); | ||
| 60 | rdtscl(now); | 62 | rdtscl(now); | 
| 61 | if ((now - bclock) >= loops) | 63 | if ((now - bclock) >= loops) | 
| 62 | break; | 64 | break; | 
| @@ -78,6 +80,7 @@ static void delay_tsc(unsigned long loops) | |||
| 78 | if (unlikely(cpu != smp_processor_id())) { | 80 | if (unlikely(cpu != smp_processor_id())) { | 
| 79 | loops -= (now - bclock); | 81 | loops -= (now - bclock); | 
| 80 | cpu = smp_processor_id(); | 82 | cpu = smp_processor_id(); | 
| 83 | rdtsc_barrier(); | ||
| 81 | rdtscl(bclock); | 84 | rdtscl(bclock); | 
| 82 | } | 85 | } | 
| 83 | } | 86 | } | 
