On Mon, Mar 16, 2020 at 04:56:42PM -0700, Xing, Cedric wrote: > On 3/16/2020 3:55 PM, Sean Christopherson wrote: > > On Mon, Mar 16, 2020 at 02:31:36PM +0100, Jethro Beekman wrote: > > > Can someone remind me why we're not passing TCS in RBX but on the stack? > > > > I finally remembered why. It's pulled off the stack and passed into the > > exit handler. I'm pretty sure the vDSO could take it in %rbx and manually > > save it on the stack, but I'd rather keep the current behavior so that the > > vDSO is callable from C (assuming @leaf is changed to be passed via %rcx). > > > The idea is that the caller of this vDSO API is C callable, hence it cannot > receive TCS in %rbx anyway. Then it has to either MOV to %rbx or PUSH to > stack. Either way the complexity is the same. The vDSO API however has to > always save it on stack for exit handler. So receiving it via stack ends up > in simplest code. It is never C callable anyway given that not following the ABI so who cares about being C callable anyway? /Jarkko