From 2d0d536387f4f161cdb9a2029ab5edf5b2170cbd Mon Sep 17 00:00:00 2001 From: wzx Date: Wed, 19 Oct 2022 17:08:59 +0800 Subject: [PATCH] Add sw64 architecture Signed-off-by: wzx --- fftw-3.3.8-sw.patch | 53 +++++++++++++++++++++++++++++++++++++++++++++ fftw.spec | 8 ++++++- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100755 fftw-3.3.8-sw.patch diff --git a/fftw-3.3.8-sw.patch b/fftw-3.3.8-sw.patch new file mode 100755 index 0000000..6d92d13 --- /dev/null +++ b/fftw-3.3.8-sw.patch @@ -0,0 +1,53 @@ +diff -Naur fftw-3.3.8.org/kernel/cycle.h fftw-3.3.8.sw/kernel/cycle.h +--- fftw-3.3.8.org/kernel/cycle.h 2022-03-03 08:12:02.740000000 +0000 ++++ fftw-3.3.8.sw/kernel/cycle.h 2022-03-03 08:14:34.660000000 +0000 +@@ -385,6 +385,26 @@ + #define HAVE_TICK_COUNTER + #endif + /*----------------------------------------------------------------*/ ++#if defined(__GNUC__) && defined(__sw_64__) && !defined(HAVE_TICK_COUNTER) ++/* ++ * The 32-bit cycle counter on sw_64 overflows pretty quickly, ++ * unfortunately. A 1GHz machine overflows in 4 seconds. ++ */ ++typedef unsigned int ticks; ++ ++static __inline__ ticks getticks(void) ++{ ++ unsigned long cc; ++ __asm__ __volatile__ ("rtc %0" : "=r"(cc)); ++ return (cc & 0xFFFFFFFF); ++} ++ ++INLINE_ELAPSED(__inline__) ++ ++#define HAVE_TICK_COUNTER ++#endif ++ ++/*----------------------------------------------------------------*/ + #if defined(__GNUC__) && defined(__alpha__) && !defined(HAVE_TICK_COUNTER) + /* + * The 32-bit cycle counter on alpha overflows pretty quickly, +@@ -421,6 +441,22 @@ + #endif + + /*----------------------------------------------------------------*/ ++#if (defined(__DECC) || defined(__DECCXX)) && defined(__sw_64) && defined(HAVE_C_ASM_H) && !defined(HAVE_TICK_COUNTER) ++# include ++typedef unsigned int ticks; ++ ++static __inline ticks getticks(void) ++{ ++ unsigned long cc; ++ cc = asm("rtc %v0"); ++ return (cc & 0xFFFFFFFF); ++} ++ ++INLINE_ELAPSED(__inline) ++ ++#define HAVE_TICK_COUNTER ++#endif ++/*----------------------------------------------------------------*/ + #if (defined(__DECC) || defined(__DECCXX)) && defined(__alpha) && defined(HAVE_C_ASM_H) && !defined(HAVE_TICK_COUNTER) + # include + typedef unsigned int ticks; diff --git a/fftw.spec b/fftw.spec index 6565df0..4693921 100644 --- a/fftw.spec +++ b/fftw.spec @@ -11,11 +11,14 @@ Name: fftw Version: 3.3.8 -Release: 11 +Release: 12 Summary: A C subroutine library for computing the discrete Fourier transform License: GPLv2+ URL: http://www.fftw.org Source0: http://www.fftw.org/fftw-%{version}.tar.gz +%ifarch sw_64 +Patch1: fftw-3.3.8-sw.patch +%endif BuildRequires: gcc-gfortran autoconf automake libtool time perl-interpreter gcc_secure make %global quad 0 @@ -461,6 +464,9 @@ fi %endif %changelog +* Wed Oct 19 2022 wuzx - 3.3.8-12 +- add sw64 patch + * Mon Mar 28 2022 baizhonggui - 3.3.8-11 - Strip the binary fftw*-wisdom* symbol -- Gitee