architecture: Add support for the RISC-V architecture. (#4305)

System Internals / systemd - rwmjones [redhat.com] - 7 October 2016 07:56 UTC

RISC-V is an open source ISA in development since 2010 at UCB. For more information, see https://riscv.org/

I am adding RISC-V support to Fedora: https://fedoraproject.org/wiki/Architectures/RISC-V

There are three major variants of the architecture (32-, 64- and 128-bit). The 128-bit variant is a paper exercise, but the other two really exist in silicon. RISC-V is always little endian.

On Linux, the default kernel uname(2) can return "riscv" for all
variants. However a patch was added recently which makes the kernel return one of "riscv32" or "riscv64" (or in future "riscv128"). So systemd should be prepared to handle any of "riscv", "riscv32" or "riscv64" (in future, "riscv128" but that is not included in the current patch). If the kernel returns "riscv" then you need to use the pointer size in order to know the real variant.

The Fedora/RISC-V kernel only ever returns "riscv64" since we're only doing Fedora for 64 bit at the moment, and we've patched the kernel so it doesn't return "riscv".

As well as the major bitsize variants, there are also architecture extensions. However I'm trying to ensure that uname(2) does *not* return any other information about those in utsname.machine, so that we don't end up with "riscv64abcde" nonsense. Instead those extensions will be exposed in /proc/cpuinfo similar to how flags work in x86.

171b533 architecture: Add support for the RISC-V architecture. (#4305)
src/basic/architecture.c | 10 ++++++++++
src/basic/architecture.h | 12 ++++++++++++
2 files changed, 22 insertions(+)

Upstream: github.com


  • Share