From d7076d75901fabf8bc3ec398d7a4f1fb4f0be5f1 Mon Sep 17 00:00:00 2001 From: wuruilong Date: Thu, 16 Nov 2023 07:25:40 +0000 Subject: [PATCH] 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(uctx->uc_mcontext.pc); #endif +#elif defined(__loongarch__) + error_addr = reinterpret_cast(uctx->uc_mcontext.__pc); #elif defined(__mips__) error_addr = reinterpret_cast( reinterpret_cast(&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) -- 2.39.5