From 46f0700bb0cc4216be2ec73216f85075df161e4d Mon Sep 17 00:00:00 2001 From: barracuda156 Date: Sun, 26 May 2024 18:47:27 +0800 Subject: [PATCH] perf.c: fix for powerpc --- source/lexbor/ports/posix/lexbor/core/perf.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git source/lexbor/ports/posix/lexbor/core/perf.c source/lexbor/ports/posix/lexbor/core/perf.c index 79b99bc..d4dbfbc 100644 --- source/lexbor/ports/posix/lexbor/core/perf.c +++ source/lexbor/ports/posix/lexbor/core/perf.c @@ -92,6 +92,24 @@ lexbor_perf_in_sec(void *perf) static unsigned long long lexbor_perf_clock(void) { +#if defined(__POWERPC__) || defined(__powerpc__) + unsigned long long int result = 0; + unsigned long int upper, lower, tmp; + __asm__ volatile ( + "0:\n" + "\tmftbu %0\n" + "\tmftb %1\n" + "\tmftbu %2\n" + "\tcmpw %2,%0\n" + "\tbne 0b\n" + : "=r"(upper), "=r"(lower), "=r"(tmp) + ); + result = upper; + result = result << 32; + result = result | lower; + + return result; +#else unsigned long long x; /* @@ -108,6 +126,7 @@ lexbor_perf_clock(void) : "rdx", "ebx", "ecx"); return x; +#endif } static unsigned long long