diff --git a/0001-greatsql-8.0.32-add-loongarch-support.patch b/0001-greatsql-8.0.32-add-loongarch-support.patch new file mode 100644 index 0000000000000000000000000000000000000000..6b44b8e5c649e485c31e7ace607d96eb9f2f9047 --- /dev/null +++ b/0001-greatsql-8.0.32-add-loongarch-support.patch @@ -0,0 +1,101 @@ +From 77b6310acfd57e500211784806bb60c76c9a6cb2 Mon Sep 17 00:00:00 2001 +From: Huang Yang +Date: Mon, 22 Apr 2024 03:23:18 +0000 +Subject: [PATCH] greatsql 8.0.32 add loongarch support + +--- + extra/duktape/duktape-2.7.0/src/duk_config.h | 12 ++++++++++ + .../source/i18n/double-conversion-utils.h | 3 ++- + storage/ndb/include/portlib/mt-asm.h | 24 +++++++++++++++++++ + 3 files changed, 38 insertions(+), 1 deletion(-) + +diff --git a/extra/duktape/duktape-2.7.0/src/duk_config.h b/extra/duktape/duktape-2.7.0/src/duk_config.h +index 77cddc1d..2c919ea9 100644 +--- a/extra/duktape/duktape-2.7.0/src/duk_config.h ++++ b/extra/duktape/duktape-2.7.0/src/duk_config.h +@@ -42,6 +42,7 @@ + * - SPARC 64-bit + * - RISC-V 32-bit + * - RISC-V 64-bit ++ * - loongarch 64-bit + * - SuperH + * - Motorola 68k + * - Emscripten +@@ -303,6 +304,11 @@ + #endif + #endif /* __riscv */ + ++/* loongarch64 */ ++#if defined(__loongarch64) ++#define DUK_F_LOONGARCH64 ++#endif ++ + /* SuperH */ + #if defined(__sh__) || \ + defined(__sh1__) || defined(__SH1__) || \ +@@ -991,6 +997,12 @@ + #define DUK_USE_BYTEORDER 1 + #undef DUK_USE_PACKED_TVAL + #define DUK_F_PACKED_TVAL_PROVIDED ++#elif defined(DUK_F_LOONGARCH64) ++/* --- loongarch 64-bit --- */ ++#define DUK_USE_ARCH_STRING "loongarch64" ++#define DUK_USE_BYTEORDER 1 ++#undef DUK_USE_PACKED_TVAL ++#define DUK_F_PACKED_TVAL_PROVIDED + #elif defined(DUK_F_SUPERH) + /* --- SuperH --- */ + #define DUK_USE_ARCH_STRING "sh" +diff --git a/extra/icu/icu-release-69-1/source/i18n/double-conversion-utils.h b/extra/icu/icu-release-69-1/source/i18n/double-conversion-utils.h +index c9374636..8d95fe89 100644 +--- a/extra/icu/icu-release-69-1/source/i18n/double-conversion-utils.h ++++ b/extra/icu/icu-release-69-1/source/i18n/double-conversion-utils.h +@@ -128,7 +128,8 @@ int main(int argc, char** argv) { + defined(__riscv) || defined(__e2k__) || \ + defined(__or1k__) || defined(__arc__) || \ + defined(__microblaze__) || defined(__XTENSA__) || \ +- defined(__EMSCRIPTEN__) || defined(__wasm32__) ++ defined(__EMSCRIPTEN__) || defined(__wasm32__) || \ ++ defined(__loongarch64) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 + #elif defined(__mc68000__) || \ + defined(__pnacl__) || defined(__native_client__) +diff --git a/storage/ndb/include/portlib/mt-asm.h b/storage/ndb/include/portlib/mt-asm.h +index 418b8d9c..f2518eeb 100644 +--- a/storage/ndb/include/portlib/mt-asm.h ++++ b/storage/ndb/include/portlib/mt-asm.h +@@ -156,6 +156,30 @@ xcng(volatile unsigned * addr, int val) + #define wmb() std::atomic_thread_fence(std::memory_order_seq_cst) + + #define cpu_pause() __asm__ __volatile__ ("yield") ++#elif defined(__loongarch64) ++ ++#define NDB_HAVE_MB ++#define NDB_HAVE_RMB ++#define NDB_HAVE_WMB ++//#define NDB_HAVE_XCNG ++ ++// details frome kernel-6.9 arch/loongarch/include/asm/barrier.h ++ ++#define DBAR(hint) __asm__ __volatile__("dbar %0 " : : "I"(hint) : "memory") ++ ++#define crwrw 0b00000 ++#define cr_r_ 0b00101 ++#define c_w_w 0b01010 ++ ++#define c_sync() DBAR(crwrw) ++#define c_rsync() DBAR(cr_r_) ++#define c_wsync() DBAR(c_w_w) ++ ++#define mb() c_sync() ++#define rmb() c_rsync() ++#define wmb() c_wsync() ++ ++#define cpu_pause() __asm__ __volatile__ ("nop") + + #else + #define NDB_NO_ASM "Unsupported architecture (gcc)" +-- +2.43.0 + + diff --git a/greatsql.spec b/greatsql.spec index 067d359dc4dc136da3b1acc8f076fdffab7ba065..f8a644154bdc699a8fd918c379c8de1102a68619 100644 --- a/greatsql.spec +++ b/greatsql.spec @@ -32,7 +32,7 @@ %global greatsql_version 25 %global revision db07cc5cb73 %global tokudb_backup_version %{mysql_version}-%{greatsql_version} -%global rpm_release 2 +%global rpm_release 3 %global release %{greatsql_version}.%{rpm_release}%{?dist} @@ -84,7 +84,7 @@ %global shared_lib_sec_name perconaserverclient # multiarch -%global multiarchs ppc %{power64} %{ix86} x86_64 %{sparc} %{arm} aarch64 +%global multiarchs ppc %{power64} %{ix86} x86_64 %{sparc} %{arm} aarch64 loongarch64 %global src_dir %{src_base}-%{mysql_version}-%{greatsql_version} @@ -124,6 +124,7 @@ SOURCE90: filter-provides.sh SOURCE91: filter-requires.sh SOURCE11: mysqld.cnf Patch0: mysql-5.7-sharedlib-rename.patch +Patch0002: 0001-greatsql-8.0.32-add-loongarch-support.patch BuildRequires: cmake >= 2.8.2 BuildRequires: make BuildRequires: gcc @@ -402,6 +403,7 @@ cat %{SOURCE101} %{SOURCE102} %{SOURCE103} %{SOURCE104} %{SOURCE105} %{SOURCE106 %setup -q -T -a 0 -a 10 -c -n %{src_dir} pushd %{src_dir} %patch0 -p0 +%patch0002 -p1 cp %{SOURCE11} scripts %build @@ -1350,6 +1352,9 @@ fi %changelog +* Mon Apr 22 2024 Wenlong Zhang - 8.0.32-25.3 +- add loongarch64 support + * Fri Jun 7 2024 GreatSQL - 8.0.32-25.2 - Change the compilation dependency of compat-openssl to openssl for GreatSQL-8.0.32-25.2