From: Dominik Vogt Date: Thu, 3 Mar 2016 09:31:57 +0000 (+0000) Subject: libitm: Introduce target macro TARGET_BEGIN_TRANSACTION_ATTRIBUTE. X-Git-Tag: basepoints/gcc-7~614 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=edcbda7e2ce5fd3411402fbd117d3900443f8451;p=thirdparty%2Fgcc.git 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 * 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 --- diff --git a/libitm/ChangeLog b/libitm/ChangeLog index 2a3554fd6af1..42b47762b9f7 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,3 +1,11 @@ +2016-03-03 Dominik Vogt + + * 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 * beginend.cc (GTM::gtm_thread::serial_lock): Put on cacheline diff --git a/libitm/beginend.cc b/libitm/beginend.cc index 1a258ad7965e..20b5547c30d8 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 44819a4d244f..c9d52034d1aa 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 ()