On Fri, 2013-08-02 at 16:26 +0200, Andreas Krebbel wrote: > On 02/08/13 16:23, Peter Bergner wrote: > > On Fri, 2013-08-02 at 15:16 +0200, Andreas Krebbel wrote: > >> Since libitm implements TX begins as function calls only call-saved > >> registers can be live across a > >> tbegin. But all the call-saved FPRs are saved in _ITM_beginTransaction and > >> get restored when doing > >> the longjmp back into the user code. So this should be no problem. > > > > Except that the htm_begin() routines are declared static inline functions, > > so when they're inlined, you aren't protected by the semantics of a call > > anymore, are you? > > They get inlined into libitm code but not into the user code. As I understand > it in the user code > will always be a call to _ITM_beginTransaction.
Sure, that protects the user code, but what about the libitm code? >From your previous comment: > As long as libitm does not use FPRs itself this should be safe without > having tbegin clobbering FPRs. Is it a given that s390 doesn't use FPRs without explicit use of floating point types? I ask, because on POWER, we can and do generate floating point code without explicit use of double, float, etc. Maybe s390 is safe in that respect. Peter