Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[cascardo/linux.git] / arch / x86 / include / asm / vgtod.h
index 3c3366c..e7e9682 100644 (file)
@@ -70,4 +70,23 @@ static inline void gtod_write_end(struct vsyscall_gtod_data *s)
        ++s->seq;
 }
 
+#ifdef CONFIG_X86_64
+
+#define VGETCPU_CPU_MASK 0xfff
+
+static inline unsigned int __getcpu(void)
+{
+       unsigned int p;
+
+       /*
+        * Load per CPU data from GDT.  LSL is faster than RDTSCP and
+        * works on all CPUs.
+        */
+       asm("lsl %1,%0" : "=r" (p) : "r" (__PER_CPU_SEG));
+
+       return p;
+}
+
+#endif /* CONFIG_X86_64 */
+
 #endif /* _ASM_X86_VGTOD_H */