This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] S/390: Port of lock elision to System/z
- From: Richard Henderson <rth at twiddle dot net>
- To: Peter Bergner <bergner at vnet dot ibm dot com>, Adhemerval Zanella <azanella at linux dot vnet dot ibm dot com>
- Cc: libc-alpha at sourceware dot org
- Date: Thu, 24 Apr 2014 15:14:25 -0700
- Subject: Re: [PATCH] S/390: Port of lock elision to System/z
- Authentication-results: sourceware.org; auth=none
- References: <ljb7sd$ukp$1 at ger dot gmane dot org> <535979FD dot 9060407 at linux dot vnet dot ibm dot com> <1398376541 dot 30787 dot 21 dot camel at otta>
On 04/24/2014 02:55 PM, Peter Bergner wrote:
> On Thu, 2014-04-24 at 17:54 -0300, Adhemerval Zanella wrote:
>> On 24-04-2014 11:42, Stefan Liebler wrote:
>>> + else
>>> + {
>>> + asm volatile ("" ::: "f0", "f1", "f2", "f3", "f4", "f5", "f6",
>>> + "f7", "f8", "f9", "f10", "f11", "f12", "f13",
>>> + "f14", "f15", "cc", "memory");
>>
>> Just curious: why do you need this asm assembly? Some arch specific memory barrier?
>
> Unlike on Power, the S390 HTM doesn't rollback any changes to the FP
> registers that were made in the failed transaction, so they have to
> marked as clobbered.
GCC takes care of adding clobbers as part of the tbegin builtin.
I see that it doesn't add the non-call-saved FPRs, which is exactly
what you're clobbering here. But if this is in fact necessary, I
think you should really work that out with the compiler, rather than
leaving this hack here.
r~