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