On Wed, Nov 29, 2017 at 01:31:58PM +0100, Peter Zijlstra wrote:
> On Wed, Nov 29, 2017 at 11:33:05AM +0100, Peter Zijlstra wrote:
> > @@ -220,7 +215,27 @@ For 32-bit we have the following convent
> >  .macro SWITCH_TO_USER_CR3 scratch_reg:req
> >     STATIC_JUMP_IF_FALSE .Lend_\@, kaiser_enabled_key, def=1
> >     mov     %cr3, \scratch_reg
> > -   ADJUST_USER_CR3 \scratch_reg
> > +
> > +   /*
> > +    * Test if the ASID needs a flush.
> > +    */
> > +   push    \scratch_reg                    /* preserve CR3 */
> 
> So I was just staring at disasm of a few functions and I noticed this
> one reads like push, while others read like pushq.
> 
> So does the stupid assembler thing really do a 32bit push if you provide
> it with a 64bit register?

N/m, I just really cannot read straight today. The pushq's were a mem64,
not a r64 argument to push.

Reply via email to