diff options
Diffstat (limited to 'import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0002-Add-atomic-operations-required-by-the-new-condition-.patch')
-rw-r--r-- | import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0002-Add-atomic-operations-required-by-the-new-condition-.patch | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0002-Add-atomic-operations-required-by-the-new-condition-.patch b/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0002-Add-atomic-operations-required-by-the-new-condition-.patch deleted file mode 100644 index c4747fa27..000000000 --- a/import-layers/yocto-poky/meta/recipes-core/glibc/glibc/0002-Add-atomic-operations-required-by-the-new-condition-.patch +++ /dev/null @@ -1,124 +0,0 @@ -From b85e30e655027132c4326d2fdde010c517165aaf Mon Sep 17 00:00:00 2001 -From: Catalin Enache <catalin.enache@windriver.com> -Date: Fri, 30 Jun 2017 14:27:34 +0300 -Subject: [PATCH 2/6] Add atomic operations required by the new condition - variable. - - * include/atomic.h (atomic_fetch_and_relaxed, - atomic_fetch_and_release, atomic_fetch_or_release, - atomic_fetch_xor_release): New. - -Upstream-Status: Backport - -Author: Torvald Riegel <triegel@redhat.com> -Signed-off-by: Catalin Enache <catalin.enache@windriver.com> ---- - ChangeLog | 6 ++++++ - include/atomic.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 53 insertions(+) - -diff --git a/ChangeLog b/ChangeLog -index cb87279..96b6da2 100644 ---- a/ChangeLog -+++ b/ChangeLog -@@ -1,3 +1,9 @@ -+2016-08-09 Torvald Riegel <triegel@redhat.com> -+ -+ * include/atomic.h (atomic_fetch_and_relaxed, -+ atomic_fetch_and_release, atomic_fetch_or_release, -+ atomic_fetch_xor_release): New. -+ - 2016-08-05 Torvald Riegel <triegel@redhat.com> - - * include/atomic.h (atomic_exchange_relaxed): New. -diff --git a/include/atomic.h b/include/atomic.h -index 129ee24..5a8e7e7 100644 ---- a/include/atomic.h -+++ b/include/atomic.h -@@ -611,9 +611,15 @@ void __atomic_link_error (void); - ({ __atomic_check_size((mem)); \ - __atomic_fetch_add ((mem), (operand), __ATOMIC_ACQ_REL); }) - -+# define atomic_fetch_and_relaxed(mem, operand) \ -+ ({ __atomic_check_size((mem)); \ -+ __atomic_fetch_and ((mem), (operand), __ATOMIC_RELAXED); }) - # define atomic_fetch_and_acquire(mem, operand) \ - ({ __atomic_check_size((mem)); \ - __atomic_fetch_and ((mem), (operand), __ATOMIC_ACQUIRE); }) -+# define atomic_fetch_and_release(mem, operand) \ -+ ({ __atomic_check_size((mem)); \ -+ __atomic_fetch_and ((mem), (operand), __ATOMIC_RELEASE); }) - - # define atomic_fetch_or_relaxed(mem, operand) \ - ({ __atomic_check_size((mem)); \ -@@ -621,6 +627,13 @@ void __atomic_link_error (void); - # define atomic_fetch_or_acquire(mem, operand) \ - ({ __atomic_check_size((mem)); \ - __atomic_fetch_or ((mem), (operand), __ATOMIC_ACQUIRE); }) -+# define atomic_fetch_or_release(mem, operand) \ -+ ({ __atomic_check_size((mem)); \ -+ __atomic_fetch_or ((mem), (operand), __ATOMIC_RELEASE); }) -+ -+# define atomic_fetch_xor_release(mem, operand) \ -+ ({ __atomic_check_size((mem)); \ -+ __atomic_fetch_xor ((mem), (operand), __ATOMIC_RELEASE); }) - - #else /* !USE_ATOMIC_COMPILER_BUILTINS */ - -@@ -724,12 +737,24 @@ void __atomic_link_error (void); - atomic_exchange_and_add_acq ((mem), (operand)); }) - # endif - -+/* XXX Fall back to acquire MO because archs do not define a weaker -+ atomic_and_val. */ -+# ifndef atomic_fetch_and_relaxed -+# define atomic_fetch_and_relaxed(mem, operand) \ -+ atomic_fetch_and_acquire ((mem), (operand)) -+# endif - /* XXX The default for atomic_and_val has acquire semantics, but this is not - documented. */ - # ifndef atomic_fetch_and_acquire - # define atomic_fetch_and_acquire(mem, operand) \ - atomic_and_val ((mem), (operand)) - # endif -+# ifndef atomic_fetch_and_release -+/* XXX This unnecessarily has acquire MO. */ -+# define atomic_fetch_and_release(mem, operand) \ -+ ({ atomic_thread_fence_release (); \ -+ atomic_and_val ((mem), (operand)); }) -+# endif - - /* XXX The default for atomic_or_val has acquire semantics, but this is not - documented. */ -@@ -743,6 +768,28 @@ void __atomic_link_error (void); - # define atomic_fetch_or_relaxed(mem, operand) \ - atomic_fetch_or_acquire ((mem), (operand)) - # endif -+/* XXX Contains an unnecessary acquire MO because archs do not define a weaker -+ atomic_or_val. */ -+# ifndef atomic_fetch_or_release -+# define atomic_fetch_or_release(mem, operand) \ -+ ({ atomic_thread_fence_release (); \ -+ atomic_fetch_or_acquire ((mem), (operand)); }) -+# endif -+ -+# ifndef atomic_fetch_xor_release -+# define atomic_fetch_xor_release(mem, operand) \ -+ ({ __typeof (*(mem)) __atg104_old; \ -+ __typeof (mem) __atg104_memp = (mem); \ -+ __typeof (*(mem)) __atg104_op = (operand); \ -+ \ -+ do \ -+ __atg104_old = (*__atg104_memp); \ -+ while (__builtin_expect \ -+ (atomic_compare_and_exchange_bool_rel ( \ -+ __atg104_memp, __atg104_old ^ __atg104_op, __atg104_old), 0));\ -+ \ -+ __atg104_old; }) -+#endif - - #endif /* !USE_ATOMIC_COMPILER_BUILTINS */ - --- -2.10.2 - |