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(arm64compat)-
armv8l(arm64compat) -
blackfin c6xcrisfrvh8300hexagonia64m32rm68kmetagmicroblazemips(native or compat)mips64(mips)mn10300nios2openriscparisc(native or compat)parisc64(parisc)ppc(powerpcnative or compat)ppc64(powerpc)ppcle(powerpcnative or compat)ppc64le(powerpc)s390(s390xcompat)s390xscoreshsh64(sh)sparc(native or compat)sparc64(sparc)tileunicore32i386(x86)i686(x86compat)x86_64(x64)xtensa