Subject: Re: [PATCH] powerpc: 32 bit getcpu VDSO function uses 64 bit instructions

From: Segher Boessenkool <[email-masked]>
Date: Thu, 27 Nov 2014 10:08:29 -0600

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