lkml.org 
[lkml]   [2018]   [Jan]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] x86/retpoline: Fill return stack buffer on vmexit
Date
From
On Thu, 2018-01-11 at 10:47 +0100, Borislav Petkov wrote:
> On Thu, Jan 11, 2018 at 10:32:31AM +0100, Peter Zijlstra wrote:
> >
> > can't you do lovely things like:
> >
> > volatile asm ("call __fill_rsb_thunk_%1" : : "r" (dummy))
> >
> > which would still let gcc select the register ?

I've had to do that for the __x86_indirect_thunk_\reg thunks and
provide all variants thereof, and export them to modules.

I'd much rather have this one inline. If I couldn't do that (which I
can, and have), then my next choice would probably have been to just
hard-code it to use %eax/%r12 and emit a simple call to that from the
call sites.

> Calling a function from asm is nasty because you need to pay attention
> to clobbered registers as gcc doesn't see the function.
>
> What one can do, I *think*, is do a non-inlined wrapping function and do
> all the alternative_call() fun inside. There you can do all the fun and
> have callee-clobbered regs which you can use.

That's OK; it's not really a C function and it only clobbers the *one*
register which is easy enough to tell __asm__() about.[unhandled content-type:application/x-pkcs7-signature]
\
 
 \ /
  Last update: 2018-01-14 23:22    [W:0.059 / U:0.056 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site