syscall_ret
x32: got the syscall semantics right - all tests pass

the actual syscall functions need to take long long arguments, but return
long. the syscall macros must cast the arguments to unsigned long, other-
wise pointers will get sign-extended to 64bit and cause crashes.
x32: import x86_64 ldso asm
x32: fix dynlinker start code

we can't push and pop on x32 as that would take off 64 bit values
from our 32 bit array.
fixes argv.
x32: add vfork

i'm unsure whether the pops and pushes do harm, but it passes simple tests,
also those involving checking argv etc on the callee.