Le Fri, 1 May 2020 23:40:59 +0200,
Charlene Wendling <juliana...@posteo.jp> a écrit :

> Hi,
> 
> > http://build-failures.rhaalovely.net/powerpc/2020-04-09/emulators/gsplus.log
> 
> `__builtin_ppc_mftb()' is not available with clang.
> 
> An easy solution would have been to change the ifdef, but as this is
> the same situation with retroarch [0], i preferred to use their logic.
> On top of that it should slightly improve the emulation on !{x86,ppc}.
> 
> I don't know why upstream chose to #define a builtin, so it can't be
> applied on archs where it is native (x86). The intent of this patch is
> to be upstreamed so i preferred to stay minimal.
> 
> This allows gsplus to be built on macppc, i can run System 6 without
> issues, excepted mouse clicks that don't register. The only other arch
> i have is amd64, where this diff makes no change.
> 
> Comments/feedback are welcome,
> 
> Charlène.
> 
> 
> [0] https://marc.info/?l=openbsd-ports-cvs&m=158816954508000&w=2
> 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/emulators/gsplus/Makefile,v
> retrieving revision 1.1.1.1
> diff -u -p -u -p -r1.1.1.1 Makefile
> --- Makefile  12 Mar 2020 12:24:08 -0000      1.1.1.1
> +++ Makefile  1 May 2020 21:36:37 -0000
> @@ -6,6 +6,7 @@ GH_ACCOUNT =          digarok
>  GH_PROJECT =         gsplus
>  GH_COMMIT =          480572054518112647c8fae5d7ea7046a6d6ecfb
>  DISTNAME =           ${GH_PROJECT}-20190816
> +REVISION =           0
>  
>  CATEGORIES =         emulators
>  
> Index: patches/patch-src_engine_c_c
> ===================================================================
> RCS file: patches/patch-src_engine_c_c
> diff -N patches/patch-src_engine_c_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_engine_c_c      1 May 2020 21:36:37 -0000
> @@ -0,0 +1,24 @@
> +$OpenBSD$
> +
> +Use posix timing to improve portability and avoid a build failure on
> +powerpc due to `__builtin_ppc_mftb' being gcc-specific.
> +
> +Index: src/engine_c.c
> +--- src/engine_c.c.orig
> ++++ src/engine_c.c
> +@@ -884,6 +884,15 @@ void fixed_memory_ptrs_shut() {
> + 
> +   #if defined(__i386__) ||  defined(__x86_64__)
> +     #include <x86intrin.h>
> ++  #elif defined(_POSIX_MONOTONIC_CLOCK)
> ++    #include <time.h>
> ++    int64_t __rdtsc() {
> ++      struct timespec tp = {0};
> ++      int64_t timestamp = 0;
> ++      if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
> ++        timestamp = tp.tv_sec * 1000000000 + tp.tv_nsec;
> ++      return timestamp;
> ++    }
> +   #elif defined(__powerpc__) || defined(__ppc__)
> +     #define __rdtsc() __builtin_ppc_mftb()
> +   #else

ok solene@

Is gsplus usable on powerpc?

Reply via email to