On Wednesday 13 May 2009 04:58:25 Ian Lance Taylor wrote: > Vladimir Kuznetsov <ks.vladimir@xxxxxxxxx> 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"? No, "syscall" is used only for system calls. I still have a normal functions that are called using standard calling convention. > 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. Yes, it would not be difficult, but depending on a modified gcc to compile the code is not a very good thing. -- Best Regards, Vladimir