summaryrefslogtreecommitdiff
path: root/debian/patches/riscv-rdcycle.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/riscv-rdcycle.diff')
-rw-r--r--debian/patches/riscv-rdcycle.diff71
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