The kernel doesn't decide. The process can call into either the 32-bit
syscall table or the 64-bit syscall table. Believe it or not, 64-bit
processes can call into the 32-bit syscall table if they want to.
(This can create security vulnerabilities if tracing/filtering tools
assume a 64-bit process must be making 64-bit syscalls!)
32-bit processes, of course, typically only know how to make 32-bit
syscalls. 64-bit processes, assuming they're built by typical
development tools, will call into libraries that make 64-bit syscalls.
(But nothing stops them from making a 32-bit syscall if they want to.)
DS
How does the process decide which table to call into? More importantly
how does it tell the kernel which table to use?
Thanks
S