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