I ran across this strangeness the other day.
_llseek takes a 64 bit value in ecx:edx ; however ftruncate64 takes a 64 bit value in edx:ecx.
I see that it is; and I can't understand the decision process that made it be.
My system still has a manpage for _llseek but no manpage for ftruncate64. Furthermore, the manpage for _llseek shows the wrong argument types being passed. strace got it right.
Note that these system calls only exist on 32 bit Linux, not 64 bit Linux. (On x64 you can actually call them using the int 80h interface, which you should not be doing unless you are a 32 bit process for reasons that are entirely non-obvious.)