diff options
Diffstat (limited to 'debian/patches/riscv-rdcycle.diff')
-rw-r--r-- | debian/patches/riscv-rdcycle.diff | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/debian/patches/riscv-rdcycle.diff b/debian/patches/riscv-rdcycle.diff deleted file mode 100644 index 24682c93..00000000 --- a/debian/patches/riscv-rdcycle.diff +++ /dev/null @@ -1,71 +0,0 @@ -From: aurel32 <aurelien@aurel32.net> -Subject: unscaledcycleclock: remove RISC-V support -Bug-Debian: https://bugs.debian.org/1059532 -Origin: upstream, https://github.com/abseil/abseil-cpp/commit/7335a36d0b5c1c597566f9aa3f458a5b6817c3b4 - -Starting with Linux 6.6 [1], RDCYCLE is a privileged instruction on -RISC-V and can't be used directly from userland. There is a sysctl -option to change that as a transition period, but it will eventually -disappear. - -The RDTIME instruction is another less accurate alternative, however its -frequency varies from board to board, and there is currently now way to -get its frequency from userland [2]. - -Therefore this patch just removes the code for unscaledcycleclock on -RISC-V. Without processor specific implementation, abseil relies on -std::chrono::steady_clock::now().time_since_epoch() which is basically a -wrapper around clock_gettime (CLOCK_MONOTONIC), which in turns use -__vdso_clock_gettime(). On RISC-V this VDSO is just a wrapper around -RDTIME correctly scaled to use nanoseconds units. - -This fixes the testsuite on riscv64, tested on a VisionFive 2 board. - -[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cc4c07c89aada16229084eeb93895c95b7eabaa3 -[2] https://github.com/abseil/abseil-cpp/pull/1631 - ---- a/absl/base/internal/unscaledcycleclock.cc -+++ b/absl/base/internal/unscaledcycleclock.cc -@@ -121,18 +121,6 @@ - return aarch64_timer_frequency; - } - --#elif defined(__riscv) -- --int64_t UnscaledCycleClock::Now() { -- int64_t virtual_timer_value; -- asm volatile("rdcycle %0" : "=r"(virtual_timer_value)); -- return virtual_timer_value; --} -- --double UnscaledCycleClock::Frequency() { -- return base_internal::NominalCPUFrequency(); --} -- - #elif defined(_M_IX86) || defined(_M_X64) - - #pragma intrinsic(__rdtsc) ---- a/absl/base/internal/unscaledcycleclock_config.h -+++ b/absl/base/internal/unscaledcycleclock_config.h -@@ -21,8 +21,8 @@ - - // The following platforms have an implementation of a hardware counter. - #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) || \ -- defined(__powerpc__) || defined(__ppc__) || defined(__riscv) || \ -- defined(_M_IX86) || (defined(_M_X64) && !defined(_M_ARM64EC)) -+ defined(__powerpc__) || defined(__ppc__) || defined(_M_IX86) || \ -+ (defined(_M_X64) && !defined(_M_ARM64EC)) - #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1 - #else - #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 0 -@@ -53,8 +53,8 @@ - #if ABSL_USE_UNSCALED_CYCLECLOCK - // This macro can be used to test if UnscaledCycleClock::Frequency() - // is NominalCPUFrequency() on a particular platform. --#if (defined(__i386__) || defined(__x86_64__) || defined(__riscv) || \ -- defined(_M_IX86) || defined(_M_X64)) -+#if (defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || \ -+ defined(_M_X64)) - #define ABSL_INTERNAL_UNSCALED_CYCLECLOCK_FREQUENCY_IS_CPU_FREQUENCY - #endif - #endif |