because the kernel assumes that returned vlong is passed by reference in the first argument, where on amd64, the (amd64) calling convention returns it in 64 bit AX register.
so seek() is a library func that emulates the previous convention for _seek() syscall. -- cinap
