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)