… | |
… | |
72 | #define ECB_MEMORY_FENCE do { } while (0) |
72 | #define ECB_MEMORY_FENCE do { } while (0) |
73 | #endif |
73 | #endif |
74 | |
74 | |
75 | #ifndef ECB_MEMORY_FENCE |
75 | #ifndef ECB_MEMORY_FENCE |
76 | #if ECB_GCC_VERSION(2,5) |
76 | #if ECB_GCC_VERSION(2,5) |
77 | #if __x86 |
77 | #if __i386__ |
78 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("lock; orb $0, -1(%%esp)" : : : "memory") |
78 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("lock; orb $0, -1(%%esp)" : : : "memory") |
79 | #define ECB_MEMORY_FENCE_ACQUIRE ECB_MEMORY_FENCE /* non-lock xchg might be enough */ |
79 | #define ECB_MEMORY_FENCE_ACQUIRE ECB_MEMORY_FENCE /* non-lock xchg might be enough */ |
80 | #define ECB_MEMORY_FENCE_RELEASE do { } while (0) /* unlikely to change in future cpus */ |
80 | #define ECB_MEMORY_FENCE_RELEASE do { } while (0) /* unlikely to change in future cpus */ |
81 | #elif __amd64 |
81 | #elif __amd64 |
82 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mfence" : : : "memory") |
82 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mfence" : : : "memory") |