Module Name: src Committed By: jmcneill Date: Sat Jan 20 20:49:11 UTC 2024
Modified Files: src/sys/arch/powerpc/powerpc: clock.c Log Message: powerpc: fix delay for large (> ~5sec) values When calculating the target timebase, promote '1000' on the RHS to ULL to force 64-bit calculation, otherwise 'n * 1000' will overflow. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/arch/powerpc/powerpc/clock.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/powerpc/powerpc/clock.c diff -u src/sys/arch/powerpc/powerpc/clock.c:1.17 src/sys/arch/powerpc/powerpc/clock.c:1.18 --- src/sys/arch/powerpc/powerpc/clock.c:1.17 Mon Jul 6 10:31:24 2020 +++ src/sys/arch/powerpc/powerpc/clock.c Sat Jan 20 20:49:11 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: clock.c,v 1.17 2020/07/06 10:31:24 rin Exp $ */ +/* $NetBSD: clock.c,v 1.18 2024/01/20 20:49:11 jmcneill Exp $ */ /* $OpenBSD: clock.c,v 1.3 1997/10/13 13:42:53 pefo Exp $ */ /* @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: clock.c,v 1.17 2020/07/06 10:31:24 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: clock.c,v 1.18 2024/01/20 20:49:11 jmcneill Exp $"); #ifdef _KERNEL_OPT #include "opt_ppcarch.h" @@ -232,7 +232,7 @@ delay(unsigned int n) #endif /* !_ARCH_PPC64 */ { tb = mftb(); - tb += (n * 1000 + ns_per_tick - 1) / ns_per_tick; + tb += (n * 1000ULL + ns_per_tick - 1) / ns_per_tick; #ifdef _ARCH_PPC64 __asm volatile ("1: mftb %0; cmpld %0,%1; blt 1b;" : "=&r"(scratch) : "r"(tb)