diff --git a/Add-riscv64-initial-support.patch b/Add-riscv64-initial-support.patch new file mode 100644 index 0000000000000000000000000000000000000000..2b9acaa87b2ff0514cd62d31e97f4637d3bba73a --- /dev/null +++ b/Add-riscv64-initial-support.patch @@ -0,0 +1,87 @@ +From 2f70cd0973e16fbd9ab66a2e33fa9ffdeb2219d6 Mon Sep 17 00:00:00 2001 +From: laokz +Date: Tue, 28 Oct 2025 16:16:10 +0800 +Subject: [PATCH] Add riscv64 initial support + +Mainly riscv64 timer and barrier code. + +Signed-off-by: sammmmy@gitee +Signed-off-by: laokz +--- + CMakeLists.txt | 1 + + include/my_rdtsc.h | 1 + + mysys/my_rdtsc.cc | 8 ++++++++ + storage/ndb/include/portlib/mt-asm.h | 8 ++++++++ + 4 files changed, 18 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1e118413a49..e8bf5f92c97 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -675,6 +675,7 @@ SET(KNOWN_64BIT_ARCHITECTURES + s390x + x86_64 + sw_64 ++ riscv64 + ) + + # Include the platform-specific file. To allow exceptions, this code +diff --git a/include/my_rdtsc.h b/include/my_rdtsc.h +index c127072cfed..71bcfc831f7 100644 +--- a/include/my_rdtsc.h ++++ b/include/my_rdtsc.h +@@ -139,5 +139,6 @@ void my_timer_init(MY_TIMER_INFO *mti); + #define MY_TIMER_ROUTINE_ASM_AARCH64 28 + #define MY_TIMER_ROUTINE_GET_THREAD_TIMES 29 + #define MY_TIMER_ROUTINE_ASM_S390X 30 ++#define MY_TIMER_ROUTINE_ASM_RISCV64 31 + + #endif +diff --git a/mysys/my_rdtsc.cc b/mysys/my_rdtsc.cc +index c1a41e02ece..523c84da325 100644 +--- a/mysys/my_rdtsc.cc ++++ b/mysys/my_rdtsc.cc +@@ -177,6 +177,12 @@ ulonglong my_timer_cycles(void) { + __asm __volatile__("stckf %0" : "=Q"(result) : : "cc"); + return result; + } ++#elif defined(__GNUC__) && defined(__riscv) && __riscv_xlen == 64 ++ { ++ ulonglong result; ++ __asm__ __volatile__ ("rdtime %0" : "=r" (result) :: "memory"); ++ return result; ++ } + #elif defined(HAVE_SYS_TIMES_H) && defined(HAVE_GETHRTIME) + /* gethrtime may appear as either cycle or nanosecond counter */ + return (ulonglong)gethrtime(); +@@ -503,6 +509,8 @@ void my_timer_init(MY_TIMER_INFO *mti) { + mti->cycles.routine = MY_TIMER_ROUTINE_ASM_S390X; + #elif defined(HAVE_SYS_TIMES_H) && defined(HAVE_GETHRTIME) + mti->cycles.routine = MY_TIMER_ROUTINE_GETHRTIME; ++#elif defined(__GNUC__) && defined(__riscv) && __riscv_xlen == 64 ++ mti->cycles.routine = MY_TIMER_ROUTINE_ASM_RISCV64; + #else + mti->cycles.routine = 0; + #endif +diff --git a/storage/ndb/include/portlib/mt-asm.h b/storage/ndb/include/portlib/mt-asm.h +index d1fceb50638..ddb22fea347 100644 +--- a/storage/ndb/include/portlib/mt-asm.h ++++ b/storage/ndb/include/portlib/mt-asm.h +@@ -132,6 +132,14 @@ static inline int xcng(volatile unsigned *addr, int val) { + #define NDB_HAVE_CPU_PAUSE + #define cpu_pause() __asm__ __volatile__("yield") + ++#elif defined(__riscv) && __riscv_xlen == 64 ++#define NDB_HAVE_MB ++#define NDB_HAVE_RMB ++#define NDB_HAVE_WMB ++#define mb() asm volatile("fence iorw,iorw" ::: "memory") ++#define rmb() asm volatile("fence ir,ir" ::: "memory") ++#define wmb() asm volatile("fence ow,ow" ::: "memory") ++ + #endif + + #elif defined(_MSC_VER) +-- +Gitee + diff --git a/greatsql.spec b/greatsql.spec index 3d33b7130721d54b153951be030b3c29f6c2a500..bd4875d53bd01e38014d2201393d2fa928b83dc4 100644 --- a/greatsql.spec +++ b/greatsql.spec @@ -31,7 +31,7 @@ %global mysql_version 8.4.4 %global greatsql_version 4 %global revision d73de75905d -%global rpm_release 3 +%global rpm_release 4 %global release %{greatsql_version}.%{rpm_release}%{?dist} @@ -103,6 +103,7 @@ SOURCE11: mysqld.cnf SOURCE12: mysql_config.sh Patch0: mysql-5.7-sharedlib-rename.patch Patch1: greatsql-8.4.4-4-port-to-cmake4.patch +Patch2: Add-riscv64-initial-support.patch BuildRequires: cmake >= 3.6.1 BuildRequires: make BuildRequires: gcc @@ -388,8 +389,7 @@ For a description of GreatSQL see https://greatsql.cn pushd %{src_dir} %patch -P0 -p1 %patch -P1 -p1 -#%patch -P0 -p0 -#%patch -P1 -p1 +%patch -P2 -p1 cp %{SOURCE11} scripts %build @@ -1215,6 +1215,9 @@ fi %{_libdir}/mysql/private/icudt73l/brkitr %changelog +* Mon Dec 01 2025 laokz - 8.4.4-4.4 +- Reapply riscv64 patch + * Sat Nov 22 2025 Funda Wang - 8.4.4-4.3 - fix build with cmake 4