fixup general __syscall breakage introduced in x32 port

the reordering of headers caused some risc archs to not see
the __syscall declaration anymore.
this caused build errors on mips with any compiler,
and on arm and microblaze with clang.

we now declare it locally just like the powerpc port does.
mips: add mips-sf subarch support (soft-float)

Userspace emulated floating-point (gcc -msoft-float) is not compatible
with the default mips abi (assumes an FPU or in kernel emulation of it).
Soft vs hard float abi should not be mixed, __mips_soft_float is checked
in musl's configure script and there is no runtime check. The -sf subarch
does not save/restore floating-point registers in setjmp/longjmp and only
provides dummy fenv implementation.
add missing sub files for mipsel-sf to use softfloat code

the build system has no automatic way to know this code applies to
both big (default) and little endian variants, so explicit .sub files
are needed.
elf.h: new elf header flag to mark 2008-NaN vs legacy-NaN on mips

see glibc commit 9c21573c02446b3d5cf6a34b67c8545e5be6a600
elf.h: add aarch64 relocations
sys/socket.h: add the SO_MAX_PACING_RATE SOL_SOCKET option

introduced in linux v3.13, 62748f32d501f5d3712a7c372bbb92abc7c62bc7
if_ether.h: new ethernet protocol type

for High-availability Seamless Redundancy (HSR) specified in IEC 62439-3
new in linux v3.13, f421436a591d34fa5279b54a96ac07d70250cc8d
in.h: new IP_MTU_DISCOVER mode IP_PMTUDISC_INTERFACE

introduced in linux v3.13, 482fc6094afad572a4ea1fd722e7b11ca72022a0
to mitigate dns cache poisoning via fragmentation
fix readdir not to set ENOENT when directory is removed while reading

per POSIX, ENOENT is reserved for invalid stream position; it is an
optional error and would only happen if the application performs
invalid seeks on the underlying file descriptor. however, linux's
getdents syscall also returns ENOENT if the directory was removed
between the time it was opened and the time of the read. we need to
catch this case and remap it to simple end-of-file condition (null
pointer return value like an error, but no change to errno). this
issue reportedly affects GNU make in certain corner cases.

rather than backing up and restoring errno, I've just changed the
syscall to be made in a way that doesn't affect errno (via an inline
syscall rather than a call to the __getdents function). the latter
still exists for the purpose of providing the public getdents alias
which sets errno.
rename superh port to "sh" for consistency

linux, gcc, etc. all use "sh" as the name for the superh arch. there
was already some inconsistency internally in musl: the dynamic linker
was searching for "ld-musl-sh.path" as its path file despite its own
name being "ld-musl-superh.so.1". there was some sentiment in both
directions as to how to resolve the inconsistency, but overall "sh"
was favored.
fix endian subarchs for sh arch

default endianness for sh on linux is little, and while conventions
vary, "eb" seems to be the most widely used suffix for big endian.
add nofpu subarchs to the sh arch, and properly detect compiler's fpu config
fix copy-and-paste error in configure's IEEE double check for sh
fix missing CFLAGS in configure test for float on sh
improve configure's target arch matching

most notably, it was failing to match sh4-*, etc., but in general the
explicit matching of hyphens for some archs was problematic because it
failed to accept simply the musl-style arch name (without a gcc-style
tuple) as an input. the original motivation of matching hyphens was to
prevent incorrectly identifying a 64-bit arch as the corresponding
32-bit arch (e.g. mips* matching mips64) but this is easily fixed by
simply checking (and for now, rejecting as unsupported) the relevant
64-bit archs.
fix strerror on mips: one error code is out of the 8-bit table range

if we ever encounter other targets where error codes don't fit in the
8-bit range, the table should probably just be bumped to 16-bit, but
for now I don't want to increase the table size on all archs just
because of a bug in the mips abi.
x32: fix sysinfo()

the kernel uses long longs in the struct, but the documentation
says they're long. so we need to fixup the mismatch between the
userspace and kernelspace structs.
since the struct offers a mem_unit member, we can avoid truncation
by adjusting that value.