16.2.11 GA

Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
This commit is contained in:
Kaleb S. KEITHLEY
2023-01-30 11:46:16 -05:00
parent 04dca0d9b7
commit a0f343dacb
+3 -32
View File
@@ -1,39 +1,10 @@
--- ceph-17.2.0-359-gb2fe9ec8/cmake/modules/CheckCxxAtomic.cmake.orig 2022-06-03 08:45:32.341075140 -0400
+++ ceph-17.2.0-359-gb2fe9ec8/cmake/modules/CheckCxxAtomic.cmake 2022-06-03 08:46:47.195775813 -0400
@@ -10,6 +10,7 @@
check_cxx_source_compiles("
#include <atomic>
#include <cstdint>
+#include <cstddef>
#if __s390x__
// Boost needs 16-byte atomics for tagged pointers.
@@ -21,13 +22,27 @@
@@ -21,6 +21,7 @@
// We specifically test access via an otherwise unknown pointer here
// to ensure we get the most complex case. If this access can be
// done without libatomic, then all accesses can be done.
+struct tagged_ptr {
+ int* ptr;
+ std::size_t tag;
+};
+
+void atomic16(std::atomic<tagged_ptr> *ptr) __attribute__ ((used));
+bool atomic16(std::atomic<unsigned __int128> *ptr) __attribute__ ((used));
bool atomic16(std::atomic<unsigned __int128> *ptr)
{
- return *ptr != 0;
+ tagged_ptr p{nullptr, 1};
+ ptr->store(p);
+ tagged_ptr f = ptr->load();
+ tagged_ptr new_tag{nullptr, 0};
+ ptr->compare_exchange_strong(f, new_tag);
}
#endif
int main() {
+#if __s390x__
+ std::atomic<tagged_ptr> ptr;
+ atomic16(&ptr);
+#endif
std::atomic<uint8_t> w1;
std::atomic<uint16_t> w2;
std::atomic<uint32_t> w4;
return *ptr != 0;