* reordered with other stores, but a load can be performed before a subsequent
* store.
*
- * "lock; addl" has worked for longer than "mfence".
+ * "lock; addl" has worked for longer than "mfence", but mfence is considerably
+ * faster.
*/
#define pg_memory_barrier() \
- __asm__ __volatile__ ("lock; addl $0,0(%%esp)" : : : "memory")
+ __asm__ __volatile__ ("mfence" : : : "memory")
#define pg_read_barrier() pg_compiler_barrier()
#define pg_write_barrier() pg_compiler_barrier()
#elif defined(__x86_64__) /* 64 bit x86 */