[PATCH] powerpc: 32 bit getcpu VDSO function uses 64 bit instructions
Segher Boessenkool
segher at kernel.crashing.org
Fri Nov 28 03:08:29 AEDT 2014
On Wed, Nov 26, 2014 at 05:50:27PM -0600, Peter Bergner wrote:
> On Thu, 2014-11-27 at 09:38 +1100, Michael Ellerman wrote:
> > On Thu, 2014-11-27 at 08:11 +1100, Anton Blanchard wrote:
> > > I used some 64 bit instructions when adding the 32 bit getcpu VDSO
> > > function. Fix it.
> >
> > Ouch. The symptom is a SIGILL I presume?
>
> Nope, you don't get a SIGILL when executing 64-bit instructions in
> 32-bit mode, so it'll happily just execute the instruction, doing
> a full 64-bit compare. I'm guessing that the upper 32-bits of both
> r3 and r4 contain zeros, so we're probably just getting lucky.
You will get a SIGILL if you run on 32-bit hardware.
> > Could we catch this by forcing -m32 in the CFLAGS for vdso32 ?
>
> As Segher mentioned, GCC passing -many down to the assembler means
> -m32 won't help. It was due to Anton disabling that gcc "feature",
> that this was caught.
There are extremely many complex failure cases without the -many.
Feel free to work on removing it, I won't :-)
Segher
More information about the Linuxppc-dev
mailing list