commit 0880967: Add support for loongarch

wuruilong wuruilong at loongson.cn
Thu Nov 16 16:00:03 UTC 2023


Author: wuruilong
Date: 2023-11-16 07:25:40 +0000
URL: https://github.com/rspamd/rspamd/commit/0880967e05cc8d3c4b9e52073f8fb453c13ae22c (refs/pull/4704/head)

Add support for loongarch

---
 cmake/FindArch.cmake              | 2 ++
 contrib/backward-cpp/backward.hpp | 2 ++
 contrib/libev/ev.c                | 2 ++
 src/rspamd.c                      | 2 ++
 4 files changed, 8 insertions(+)

diff --git a/cmake/FindArch.cmake b/cmake/FindArch.cmake
index d1defc82b..e17220737 100644
--- a/cmake/FindArch.cmake
+++ b/cmake/FindArch.cmake
@@ -35,6 +35,8 @@ set(archdetect_c_code "
     #else
         #error cmake_ARCH ppc
     #endif
+#elif defined(__loongarch__) || defined(__loongarch64)
+    #error cmake_ARCH loongarch64
 #endif
 
 #error cmake_ARCH unknown
diff --git a/contrib/backward-cpp/backward.hpp b/contrib/backward-cpp/backward.hpp
index ce725559b..ca09b7217 100644
--- a/contrib/backward-cpp/backward.hpp
+++ b/contrib/backward-cpp/backward.hpp
@@ -4222,6 +4222,8 @@ public:
     #else
       error_addr = reinterpret_cast<void *>(uctx->uc_mcontext.pc);
     #endif
+#elif defined(__loongarch__)
+    error_addr = reinterpret_cast<void *>(uctx->uc_mcontext.__pc);
 #elif defined(__mips__)
     error_addr = reinterpret_cast<void *>(
         reinterpret_cast<struct sigcontext *>(&uctx->uc_mcontext)->sc_pc);
diff --git a/contrib/libev/ev.c b/contrib/libev/ev.c
index 8657aa96e..230445d2a 100644
--- a/contrib/libev/ev.c
+++ b/contrib/libev/ev.c
@@ -843,6 +843,8 @@ struct signalfd_siginfo
       #define ECB_MEMORY_FENCE         __asm__ __volatile__ ("tb1 0,%%r0,128" : : : "memory")
     #elif defined __sh__
       #define ECB_MEMORY_FENCE         __asm__ __volatile__ (""         : : : "memory")
+    #elif defined __loongarch__ || __loongarch64
+      #define ECB_MEMORY_FENCE         __asm__ __volatile__ ("dbar %0 ": : "I"(0) : "memory")
     #endif
   #endif
 #endif
diff --git a/src/rspamd.c b/src/rspamd.c
index df08f5410..b8523b44b 100644
--- a/src/rspamd.c
+++ b/src/rspamd.c
@@ -1279,6 +1279,8 @@ get_cpu_architecture(void)
 	return "ARM64";
 #elif defined(__arm__) || defined(_M_ARM)
 	return "ARM";
+#elif defined(__loongarch__) || defined(__loongarch64)
+	return "LOONGARCH64";
 #elif defined(__mips__)
 	return "MIPS";
 #elif defined(__powerpc__) || defined(_M_PPC)


More information about the Commits mailing list