diff options
Diffstat (limited to 'meta/recipes-core/glibc/glibc/0001-Add-atomic_exchange_relaxed.patch')
-rw-r--r-- | meta/recipes-core/glibc/glibc/0001-Add-atomic_exchange_relaxed.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/meta/recipes-core/glibc/glibc/0001-Add-atomic_exchange_relaxed.patch b/meta/recipes-core/glibc/glibc/0001-Add-atomic_exchange_relaxed.patch new file mode 100644 index 0000000000..a33a135f78 --- /dev/null +++ b/meta/recipes-core/glibc/glibc/0001-Add-atomic_exchange_relaxed.patch | |||
@@ -0,0 +1,58 @@ | |||
1 | From ce74a620bf9e1a40b7ba06d35160e20633a4d8bb Mon Sep 17 00:00:00 2001 | ||
2 | From: Catalin Enache <catalin.enache@windriver.com> | ||
3 | Date: Fri, 7 Jul 2017 13:11:16 +0300 | ||
4 | Subject: [PATCH 1/6] Add atomic_exchange_relaxed. | ||
5 | |||
6 | * include/atomic.h (atomic_exchange_relaxed): New | ||
7 | |||
8 | Upstream-Status: Backport | ||
9 | |||
10 | Author: Torvald Riegel <triegel@redhat.com> | ||
11 | Signed-off-by: Catalin Enache <catalin.enache@windriver.com> | ||
12 | --- | ||
13 | ChangeLog | 4 ++++ | ||
14 | include/atomic.h | 9 +++++++++ | ||
15 | 2 files changed, 13 insertions(+) | ||
16 | |||
17 | diff --git a/ChangeLog b/ChangeLog | ||
18 | index 0fbda90..cb87279 100644 | ||
19 | --- a/ChangeLog | ||
20 | +++ b/ChangeLog | ||
21 | @@ -1,3 +1,7 @@ | ||
22 | +2016-08-05 Torvald Riegel <triegel@redhat.com> | ||
23 | + | ||
24 | + * include/atomic.h (atomic_exchange_relaxed): New. | ||
25 | + | ||
26 | 2016-01-28 Carlos O'Donell <carlos@redhat.com> | ||
27 | Alexey Makhalov <amakhalov@vmware.com> | ||
28 | Florian Weimer <fweimer@redhat.com> | ||
29 | diff --git a/include/atomic.h b/include/atomic.h | ||
30 | index ad3db25..129ee24 100644 | ||
31 | --- a/include/atomic.h | ||
32 | +++ b/include/atomic.h | ||
33 | @@ -588,6 +588,9 @@ void __atomic_link_error (void); | ||
34 | __atomic_compare_exchange_n ((mem), (expected), (desired), 1, \ | ||
35 | __ATOMIC_RELEASE, __ATOMIC_RELAXED); }) | ||
36 | |||
37 | +# define atomic_exchange_relaxed(mem, desired) \ | ||
38 | + ({ __atomic_check_size((mem)); \ | ||
39 | + __atomic_exchange_n ((mem), (desired), __ATOMIC_RELAXED); }) | ||
40 | # define atomic_exchange_acquire(mem, desired) \ | ||
41 | ({ __atomic_check_size((mem)); \ | ||
42 | __atomic_exchange_n ((mem), (desired), __ATOMIC_ACQUIRE); }) | ||
43 | @@ -684,6 +687,12 @@ void __atomic_link_error (void); | ||
44 | *(expected) == __atg103_expected; }) | ||
45 | # endif | ||
46 | |||
47 | +/* XXX Fall back to acquire MO because archs do not define a weaker | ||
48 | + atomic_exchange. */ | ||
49 | +# ifndef atomic_exchange_relaxed | ||
50 | +# define atomic_exchange_relaxed(mem, val) \ | ||
51 | + atomic_exchange_acq ((mem), (val)) | ||
52 | +# endif | ||
53 | # ifndef atomic_exchange_acquire | ||
54 | # define atomic_exchange_acquire(mem, val) \ | ||
55 | atomic_exchange_acq ((mem), (val)) | ||
56 | -- | ||
57 | 2.10.2 | ||
58 | |||