ABI question, porting ports to amd64
Marco van de Voort
marcov at stack.nl
Sun May 16 14:08:05 PDT 2004
y> > is %r10. So gcc puts the 4th param in %rcx, and the move moves it to
> > %r10 for the kernel.
>
> Correct. We use the ABI argument ordering since that is what gcc gave
> us when calling the stub funtions, but the syscall instruction clobbers
> %rcx as it enters the kernel.
>
> If we were smarter, we'd only do this move if we know the syscall had 4
> or more arguments. But unfortunately, we don't have this information
> when building libc.
>
> Or, we'd declare the syscall prototypes with an explicit override of the
> register parameter assignments or something. (bad luck though if you
> neglect to use the right #includes for your code and miss out a
> prototype)
I was always curious why the (basic) *nix syscalls weren't inlined? Can't
gcc do that?
More information about the freebsd-amd64
mailing list