RE: remove the last set_fs() in common code, and remove it for x86 and powerpc v3
From: David Laight <hidden>
Date: 2020-09-10 09:28:25
Also in:
linux-arch, linux-fsdevel, lkml
From: Christophe Leroy
Sent: 10 September 2020 09:14 Le 10/09/2020 à 10:04, David Laight a écrit :quoted
From: Linus Torvaldsquoted
Sent: 09 September 2020 22:34 On Wed, Sep 9, 2020 at 11:42 AM Segher Boessenkool [off-list ref] wrote:quoted
It will not work like this in GCC, no. The LLVM people know about that. I do not know why they insist on pushing this, being incompatible and everything.Umm. Since they'd be the ones supporting this, *gcc* would be the incompatible one, not clang.I had an 'interesting' idea. Can you use a local asm register variable as an input and output to an 'asm volatile goto' statement? Well you can - but is it guaranteed to work :-)With gcc at least it should work according to https://gcc.gnu.org/onlinedocs/gcc/Local-Register-Variables.html They even explicitely tell: "The only supported use for this feature is to specify registers for input and output operands when calling Extended asm "
A quick test isn't good....
int bar(char *z)
{
__label__ label;
register int eax asm ("eax") = 6;
asm volatile goto (" mov $1, %%eax" ::: "eax" : label);
label:
return eax;
}
0000000000000040 <bar>:
40: b8 01 00 00 00 mov $0x1,%eax
45: b8 06 00 00 00 mov $0x6,%eax
4a: c3 retq
although adding:
asm volatile ("" : "+r" (eax));
either side of the 'asm volatile goto' does fix it.
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)