+2003-05-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ * malloc/arena.c (arena_get2): Add atomic_write_barrier.
+ * malloc/thread-m.h: Include <atomic.h>.
+ (atomic_full_barrier): Provide default.
+ (atomic_read_barrier): Likewise.
+ (atomic_write_barrier): Likewise.
+ * sysdeps/ia64/bits/atomic.h (atomic_full_barrier): New #define.
+
2003-06-30 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/sysdep.h: Define cfi_rel_offset and CFI_REL_OFFSET.
/* Malloc implementation for multiple threads without lock contention.
- Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
/* Add the new arena to the global list. */
(void)mutex_lock(&list_lock);
a->next = main_arena.next;
+ atomic_write_barrier ();
main_arena.next = a;
(void)mutex_unlock(&list_lock);
#if defined(_LIBC) /* The GNU C library, a special case of Posix threads */
+#include <atomic.h>
#include <bits/libc-lock.h>
#ifdef PTHREAD_MUTEX_INITIALIZER
#endif /* defined(NO_THREADS) */
+#ifndef atomic_full_barrier
+# define atomic_full_barrier() __asm ("" ::: "memory")
+#endif
+
+#ifndef atomic_read_barrier
+# define atomic_read_barrier() atomic_full_barrier ()
+#endif
+
+#ifndef atomic_write_barrier
+# define atomic_write_barrier() atomic_full_barrier ()
+#endif
+
#endif /* !defined(_THREAD_M_H) */
} \
while (__builtin_expect (__val != __oldval, 0)); \
__oldval & __mask; })
+
+#define atomic_full_barrier() __sync_synchronize ()