On Mon, Jul 11, 2022 at 10:16:00PM +0800, Xu Kuohai wrote: > >> + if (save_ret) > >> + emit(A64_STR64I(p->jited ? r0 : A64_R(0), A64_SP, retval_off), > >> + ctx); > > > > This should be only A64_R(0), not r0. r0 happens to equal A64_R(0) when > > jitted due to the way build_epilogue() builds the function at the moment, > > but we shouldn't rely on that. > > > > looks like I misunderstood something, will change it to: > > /* store return value, which is held in x0 for interpreter and in > * bpf register r0 for JIT, It's simpler than that: in both cases the return value is in x0 because the function follows the procedure call standard. You could drop the comment to avoid confusion and only do the change to A64_R(0) Thanks, Jean > > > but r0 happens to equal x0 due to the > * way build_epilogue() builds the JIT image. > */ > if (save_ret) > emit(A64_STR64I(A64_R(0), A64_SP, retval_off), ctx); > > > Apart from that, for the series > > > > Reviewed-by: Jean-Philippe Brucker <jean-philippe@xxxxxxxxxx> > > > > .