From: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Date: Wed, 23 Mar 2022 22:28:51 +0100
Subject: Add riscv64 support

Add missing definitions for the RISC-V 64bit architecture.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
(cherry picked from commit 91353b424bde6575d42a21a3a202fda2450e11c5)
---
 configure.ac       | 1 +
 src/architecture.h | 4 ++++
 src/missing.h      | 2 ++
 3 files changed, 7 insertions(+)

diff --git a/configure.ac b/configure.ac
index 0f37725..dc58fe1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -44,6 +44,7 @@ SET_ARCH(X86_64, x86_64*)
 SET_ARCH(IA32, i*86*)
 SET_ARCH(MIPS, mips*)
 SET_ARCH(AARCH64, aarch64*)
+SET_ARCH(RISCV64, riscv64*)
 
 AC_CHECK_SIZEOF(pid_t)
 AC_CHECK_SIZEOF(uid_t)
diff --git a/src/architecture.h b/src/architecture.h
index 26679e2..2d2daa7 100644
--- a/src/architecture.h
+++ b/src/architecture.h
@@ -57,6 +57,7 @@ enum {
         ARCHITECTURE_M68K,
         ARCHITECTURE_TILEGX,
         ARCHITECTURE_CRIS,
+        ARCHITECTURE_RISCV64,
         _ARCHITECTURE_MAX,
         _ARCHITECTURE_INVALID = -1
 };
@@ -146,6 +147,9 @@ int uname_architecture(void);
 #elif defined(__alpha__)
 #  define native_architecture() ARCHITECTURE_ALPHA
 #  define LIB_ARCH_TUPLE "alpha-linux-gnu"
+#elif defined(__riscv) && __riscv_xlen == 64
+#  define native_architecture() ARCHITECTURE_RISCV64
+#  define define LIB_ARCH_TUPLE "riscv64-linux-gnu"
 #elif defined(__aarch64__)
 #  if __BYTE_ORDER == __BIG_ENDIAN
 #    define native_architecture() ARCHITECTURE_ARM64_BE
diff --git a/src/missing.h b/src/missing.h
index a24ad03..9c137e4 100644
--- a/src/missing.h
+++ b/src/missing.h
@@ -26,6 +26,8 @@ static inline pid_t gettid(void) {
 #    define __NR_getrandom 384
 # elif defined(__aarch64__)
 #    define __NR_getrandom 278
+# elif defined(__riscv)
+#    define __NR_getrandom 278
 #  elif defined(__ia64__)
 #    define __NR_getrandom 1339
 #  elif defined(__m68k__)
