Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 May 2004 23:08:03 +0200 (CEST)
From:      marcov@stack.nl (Marco van de Voort)
To:        freebsd-amd64@freebsd.org
Subject:   Re: ABI question, porting ports to amd64
Message-ID:  <20040516210803.F03CC94@toad.stack.nl>
In-Reply-To: <200405161316.30635.peter@wemm.org> "from Peter Wemm at May 16, 2004 01:16:30 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
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?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040516210803.F03CC94>