add sync_core primitive
[urcu.git] / arch_x86.h
index 9e0079d6a5a7fc8fee6e81e0ea26d80995446450..e7d945e3859393edece5eb4b2aee4c99538083e2 100644 (file)
 /* Nop everywhere except on alpha. */
 #define smp_read_barrier_depends()
 
+static inline void rep_nop(void)
+{
+       asm volatile("rep; nop" : : : "memory");
+}
+
 static inline void cpu_relax(void)
 {
        rep_nop();
 }
 
+/*
+ * Serialize core instruction execution. Also acts as a compiler barrier.
+ */
+static inline void sync_core(void)
+{
+       asm volatile("cpuid" : : : "memory", "eax", "ebx", "ecx", "edx");
+}
+
 #define rdtscll(val)                                                     \
        do {                                                              \
             unsigned int __a, __d;                                       \
This page took 0.022478 seconds and 4 git commands to generate.