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



Reply via email to