On Tue, Apr 19, 2016 at 09:44:37AM +0300, Alexander Monakov wrote: > On Tue, 19 Apr 2016, AKASHI Takahiro wrote: > > > looking at [2] i don't see why > > > > > > func: > > > mov x9, x30 > > > bl _tracefunc > > > <function body> > > > > Actually, > > mov x9, x30 > > bl _tracefunc > > mov x30, x9 > > <function body> > > I think here Szabolcs' point was that the last instruction can be eliminated: > _tracefunc can be responsible for restoring x30, and can use x9 to return to > its caller. It has a non-standard calling convention and needs to be > implemented in assembly anyway.
OK, but in _tracefunc, x30 has been updated, and so we should return as follows: mov xTMP, x30 mov x30, x9 ret xTMP We need one more temp register here... Thanks, -Takahiro AKASHI > Alexander