remove more unnecessary operand-size suffixes from x86_64 atomic.h
fix system breakage window during make install due to permissions

install.sh was wrongly waiting until after atomically replacing the
old file to set the correct permissions on the new file. in the case
of the dynamic linker, this would cause a dynamic-linked chmod command
not to run (due to missing executable permissions on the dynamic
linker) and thus leave the system in an unusable state.

even if chmod is static-linked, the old behavior had a race window
where dynamic-linked programs could fail to run.
internal/syscall.h: use a macro for the syscall args casts

this allows syscall_arch.h to define the macro __scc if special
casting is needed, as is the case for x32, where the actual syscall
arguments are 64bit, but, in case of pointers, would get sign-extended
and thus become invalid.
internal/syscall.h: add __sca (syscall arg) macro

some 32-on-64 archs require that the actual syscall args be long long.
in that case syscall_arch.h can define __sca to whatever it needs
and syscall.h picks it up.
all other archs just use long as usual.
use __sca type for syscall prototypes in pthread code
sys/sem.h: cheat and make all longs use time_t instead

most of the members should be time_t anyway, and time_t has the
correct semantics for "syscall_long", so it works on all archs, even x32.
sys/shm.h: move arch specific structs to bits/
import vanilla x86_64 code as x32
x32: configure: recognize x86_64-x32 and x32

x32 is the internal arch name, but glibc uses x86_64-x32.
there doesn't exist a specific triple for x32 in gcc and binutils.
you're supposed to build your compiler for x86_64 and configure
it with multilib support for "mx32".

however it turns out that using a triple of x86_64-x32 makes
gcc and binutils pick up the right arch (they detect it as x86_64)
and allows us to have a unique triple for cross-compiler toolchains.
x32: fix alltypes.h.in

wchar_t and _Addr are aligned with gcc so the types match exactly;
otherwise C++ code would fail to build.
the reason why they chose long as the wchar_t type remains a mistery
though...
x32: import correct syscall numbers

despite having its own set of syscall numbers, the x86_64 syscall
numbers seemed to work just fine...
x32: fix bit headers related to long size
x32: syscall arguments are long long
x32: use new __sc[ac] macros to cast syscall args correctly
x32: reg.h: __WORDSIZE is 32 (to be consistent with glibc)
x32: fix some bits headers where kernel and userspace long mismatch
x32: fix dynlinker start asm
x32: fix hardcoded syscall numbers in asm
x32: add arch-specific sys/shm.h members
x32: fix bits/stat.h