> > > Call out that except for RSP, the registers are undefined on > > > asynchronous exits as far as the vDSO ABI is concerned. E.g. the > > > vDSO's exception handler clobbers RDX, RDI, and RSI, and the kernel > > > doesn't guarantee that > > > R8 or R9 will be zero (the synthetic value loaded by the CPU). > > > > Perhaps a nit: > > > > I am not that familiar with this part, but AFAICT the kernel always > > sets RDI/RSI/RDX to exception vector/error code/addr before invoking > > the user handler, after the vDSO's exception handler clobbers them. > > > > Since you are adding description to them, should we somehow call this > > out in the comment, if I didn't miss anything? > > I don't think we want to commit to that as ABI for the vDSO interface, which > is > why I documented the values as being "undefined". Maybe were already stuck > with that ABI, e.g. if some funky userspace is looking at the register params > instead of its run structure, but IMO we should at least discourage relying > on the > values. > > E.g. if the kernel ever changed its exception fixup to use different > registers, then > RDI/RSI/RDX might not hold the same values. In hindsight, we probably should > have scrambled those registers after propagating the exception information to > the > run structure.
Yeah makes sense to me. Thanks for explaining.

