Module Name: src
Committed By: jdc
Date: Sat Nov 24 19:14:49 UTC 2012
Modified Files:
src/sys/arch/arm/broadcom [netbsd-6]: bcm2835_tmr.c
Log Message:
Pull up revision 1.2 (requested by skrll in ticket #704).
Fix delay.
To generate a diff of this commit:
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 src/sys/arch/arm/broadcom/bcm2835_tmr.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/arm/broadcom/bcm2835_tmr.c
diff -u src/sys/arch/arm/broadcom/bcm2835_tmr.c:1.1.2.2 src/sys/arch/arm/broadcom/bcm2835_tmr.c:1.1.2.3
--- src/sys/arch/arm/broadcom/bcm2835_tmr.c:1.1.2.2 Thu Aug 9 06:36:50 2012
+++ src/sys/arch/arm/broadcom/bcm2835_tmr.c Sat Nov 24 19:14:49 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_tmr.c,v 1.1.2.2 2012/08/09 06:36:50 jdc Exp $ */
+/* $NetBSD: bcm2835_tmr.c,v 1.1.2.3 2012/11/24 19:14:49 jdc Exp $ */
/*-
* Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_tmr.c,v 1.1.2.2 2012/08/09 06:36:50 jdc Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_tmr.c,v 1.1.2.3 2012/11/24 19:14:49 jdc Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -159,22 +159,19 @@ delay(unsigned int n)
uint32_t delta, usecs;
KASSERT(sc != NULL);
- int nhloops = 0;
last = bus_space_read_4(sc->sc_iot, sc->sc_ioh, BCM2835_STIMER_CLO);
delta = usecs = 0;
while (n > usecs) {
- if (nhloops++ > 0x100000) Debugger();
curr = bus_space_read_4(sc->sc_iot, sc->sc_ioh,
BCM2835_STIMER_CLO);
- /* XXXNH !?!?!?!?!?!?! - use CHI? */
/* Check to see if the timer has wrapped around. */
if (curr < last)
- delta += (last + (counts_per_hz - curr));
+ delta += curr + (UINT32_MAX - last);
else
- delta += (last - curr);
+ delta += curr - last;
last = curr;