Bladeren bron

x86: fix sched_clock()

[ andi@firstfloor.org: build fix ]

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Ingo Molnar 17 jaren geleden
bovenliggende
commit
92767af0e3
3 gewijzigde bestanden met toevoegingen van 16 en 10 verwijderingen
  1. 4 9
      arch/x86/kernel/rtc.c
  2. 11 0
      include/asm-x86/msr.h
  3. 1 1
      include/asm-x86/tsc.h

+ 4 - 9
arch/x86/kernel/rtc.c

@@ -196,14 +196,9 @@ int update_persistent_clock(struct timespec now)
 	return set_rtc_mmss(now.tv_sec);
 }
 
-unsigned long long __vsyscall_fn native_read_tsc(void)
+unsigned long long 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);
+	return __native_read_tsc();
 }
-EXPORT_SYMBOL_GPL(native_read_tsc);
+EXPORT_SYMBOL(native_read_tsc);
+

+ 11 - 0
include/asm-x86/msr.h

@@ -93,6 +93,17 @@ static inline int native_write_msr_safe(unsigned int msr,
 
 extern unsigned long long native_read_tsc(void);
 
+static __always_inline unsigned long long __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);
+}
+
 static inline unsigned long long native_read_pmc(int counter)
 {
 	DECLARE_ARGS(val, low, high);

+ 1 - 1
include/asm-x86/tsc.h

@@ -46,7 +46,7 @@ static inline cycles_t vget_cycles(void)
 	if (!cpu_has_tsc)
 		return 0;
 #endif
-	return (cycles_t) native_read_tsc();
+	return (cycles_t) __native_read_tsc();
 }
 
 extern void tsc_init(void);