From: Jun Tang Date: Wed, 22 Feb 2023 16:45:59 +0000 (+0000) Subject: AArch64: Fix HP_TIMING_DIFF computation [BZ# 29329] X-Git-Tag: glibc-2.38~544 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=311a7e0256975275d97077f1af338bc9caf0c837;p=thirdparty%2Fglibc.git AArch64: Fix HP_TIMING_DIFF computation [BZ# 29329] Fix the computation to allow for cntfrq_el0 being larger than 1GHz. Assume cntfrq_el0 is a multiple of 1MHz to increase the maximum interval (1024 seconds at 1GHz). Reviewed-by: Wilco Dijkstra --- diff --git a/sysdeps/aarch64/hp-timing.h b/sysdeps/aarch64/hp-timing.h index c8469e30118..b97e878f7b5 100644 --- a/sysdeps/aarch64/hp-timing.h +++ b/sysdeps/aarch64/hp-timing.h @@ -41,7 +41,7 @@ typedef uint64_t hp_timing_t; #define HP_TIMING_DIFF(Diff, Start, End) \ ({ hp_timing_t freq; \ __asm__ __volatile__ ("mrs %0, cntfrq_el0" : "=r" (freq)); \ - (Diff) = ((End) - (Start)) * (UINT64_C(1000000000) / freq); \ + (Diff) = (((End) - (Start)) * UINT64_C(1000000000 >> 6)) / (freq >> 6); \ }) #endif /* hp-timing.h */