Linux
(v4.12 - 2017-July)
Let's refer to the source of the newuname system call.
Tracking this down is complicated by the fact that Linux has UTS namespaces, but the init_uts_ns machine field is initialized by the UTS_MACHINE macro, which is defined per-architecture.
Further complicating matters, machine can be overridden via override_architecture(), if the process is running under a 32-bit "compat" personality, to COMPAT_UTS_MACHINE.
UTS_MACHINE defaults in Makefile to the same thing as ARCH. However, many platforms have separate sub-architectures under the same arch directory, so they set UTS_MACHINE themselves
With the list of directories in arch/ and a little grep-ing of the Linux kernel sources (git grep 'UTS_MACHINE\s*:=' and git grep COMPAT_UTS_MACHINE), we can arrive at this list:
alpha
arc
arm
aarch64_be (arm64)
aarch64 (arm64)
armv8b (arm64 compat)
armv8l (arm64 compat)
blackfin
c6x
cris
frv
h8300
hexagon
ia64
m32r
m68k
metag
microblaze
mips (native or compat)
mips64 (mips)
mn10300
nios2
openrisc
parisc (native or compat)
parisc64 (parisc)
ppc (powerpc native or compat)
ppc64 (powerpc)
ppcle (powerpc native or compat)
ppc64le (powerpc)
s390 (s390x compat)
s390x
score
sh
sh64 (sh)
sparc (native or compat)
sparc64 (sparc)
tile
unicore32
i386 (x86)
i686 (x86 compat)
x86_64 (x64)
xtensa