This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Custom calling convention
- From: Ian Lance Taylor <iant at google dot com>
- To: Vladimir Kuznetsov <ks dot vladimir at gmail dot com>
- Cc: gcc-help at gcc dot gnu dot org
- Date: Tue, 12 May 2009 17:58:25 -0700
- Subject: Re: Custom calling convention
- References: <200905130024.50793.ks.vladimir@gmail.com>
Vladimir Kuznetsov <ks.vladimir@gmail.com> writes:
> I have a very small embedded kernel that uses a slightly modified calling
> conventions than normal ones on x86-64: it uses r10 instead or rcx to pass 4th
> argument and "syscall" instruction instead of normal "call". I am using a thin
> wrapper like this:
>
> error_t __do_syscall(SyscallParams params, ...) __asm__("__do_syscall");
> __asm__(
> "__do_syscall:\n"
> " movq %rcx, %r10\n"
> " syscall\n"
> " ret\n"
> );
>
> but it requires an additional function call (and so uses an additional cache
> line and, possibly, a TLB entry). Are there any way to do it inline ?
You always want to use "syscall" instead of "call"? There are no
command line options to make gcc generate that kind of code. It would
not be particularly difficult to modify gcc to do it.
Ian