summaryrefslogtreecommitdiff
path: root/libitm
diff options
context:
space:
mode:
authorDominik Vogt <vogt@linux.vnet.ibm.com>2016-03-03 09:31:57 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2016-03-03 09:31:57 +0000
commitedcbda7e2ce5fd3411402fbd117d3900443f8451 (patch)
tree37478a7bb9920e476231d5fa32ad25f1babd343e /libitm
parenta75f5e30cc27568bbc2bc0629425598e89bf9059 (diff)
libitm: Introduce target macro TARGET_BEGIN_TRANSACTION_ATTRIBUTE.
The attached patch adds the a target specific attribute via the new target macro TARGET_BEGIN_TRANSACTION_ATTRIBUTE to the function begin_transaction(). S/390 uses this to set the soft-float target attribute which is needed to fix a crash with -m31. As there seems to be no place in libitm to document internal macros like USE_HTM_FASTPATH or the new macro, I've put the documentation in a comment where the macro is used. 2016-03-03 Dominik Vogt <vogt@linux.vnet.ibm.com> * config/s390/target.h (TARGET_BEGIN_TRANSACTION_ATTRIBUTE): Define function attribute to disable floating point in begin_transaction() on S/390. * beginend.cc (begin_transaction): Use TARGET_BEGIN_TRANSACTION_ATTRIBUTE. From-SVN: r233929
Diffstat (limited to 'libitm')
-rw-r--r--libitm/ChangeLog8
-rw-r--r--libitm/beginend.cc6
-rw-r--r--libitm/config/s390/target.h3
3 files changed, 17 insertions, 0 deletions
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index 2a3554fd6af..42b47762b9f 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,11 @@
+2016-03-03 Dominik Vogt <vogt@linux.vnet.ibm.com>
+
+ * config/s390/target.h (TARGET_BEGIN_TRANSACTION_ATTRIBUTE): Define
+ function attribute to disable floating point in begin_transaction() on
+ S/390.
+ * beginend.cc (begin_transaction): Use
+ TARGET_BEGIN_TRANSACTION_ATTRIBUTE.
+
2016-01-22 Torvald Riegel <triegel@redhat.com>
* beginend.cc (GTM::gtm_thread::serial_lock): Put on cacheline
diff --git a/libitm/beginend.cc b/libitm/beginend.cc
index 1a258ad7965..20b5547c30d 100644
--- a/libitm/beginend.cc
+++ b/libitm/beginend.cc
@@ -149,6 +149,12 @@ choose_code_path(uint32_t prop, abi_dispatch *disp)
return a_runInstrumentedCode;
}
+#ifdef TARGET_BEGIN_TRANSACTION_ATTRIBUTE
+/* This macro can be used to define target specific attributes for this
+ function. For example, S/390 requires floating point to be disabled in
+ begin_transaction. */
+TARGET_BEGIN_TRANSACTION_ATTRIBUTE
+#endif
uint32_t
GTM::gtm_thread::begin_transaction (uint32_t prop, const gtm_jmpbuf *jb)
{
diff --git a/libitm/config/s390/target.h b/libitm/config/s390/target.h
index 44819a4d244..c9d52034d1a 100644
--- a/libitm/config/s390/target.h
+++ b/libitm/config/s390/target.h
@@ -69,6 +69,9 @@ cpu_relax (void)
/* Number of retries for transient failures. */
#define _HTM_ITM_RETRIES 10
#define USE_HTM_FASTPATH
+#define TARGET_BEGIN_TRANSACTION_ATTRIBUTE \
+ __attribute__ ((target("soft-float")))
+
static inline bool
htm_available ()