Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Feb 2011 01:43:45 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r218426 - head/sys/arm/mv
Message-ID:  <201102080143.p181hjjO029439@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Tue Feb  8 01:43:45 2011
New Revision: 218426
URL: http://svn.freebsd.org/changeset/base/218426

Log:
  o   Make sure to mask off timer1 interrupts. It's not necessarily
      masked-off by the firmware.
  o   In DELAY(). Make sure we have an inner-loop body that the compiler
      cannot eliminate. While timing does not have to be perfect, the
      loops must be there to have at least some notion of delay.
  
  Obtained from: Juniper Networks

Modified:
  head/sys/arm/mv/timer.c

Modified: head/sys/arm/mv/timer.c
==============================================================================
--- head/sys/arm/mv/timer.c	Tue Feb  8 00:36:46 2011	(r218425)
+++ head/sys/arm/mv/timer.c	Tue Feb  8 01:43:45 2011	(r218426)
@@ -150,6 +150,7 @@ mv_timer_attach(device_t dev)
 	write_cpu_ctrl(BRIDGE_IRQ_CAUSE, irq_cause);
 	irq_mask = read_cpu_ctrl(BRIDGE_IRQ_MASK);
 	irq_mask |= IRQ_TIMER0_MASK;
+	irq_mask &= ~IRQ_TIMER1_MASK;
 	write_cpu_ctrl(BRIDGE_IRQ_MASK, irq_mask);
 
 	sc->et.et_name = "CPUTimer0";
@@ -229,7 +230,7 @@ DELAY(int usec)
 	if (!timers_initialized) {
 		for (; usec > 0; usec--)
 			for (val = 100; val > 0; val--)
-				;
+				__asm __volatile("nop" ::: "memory");
 		return;
 	}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102080143.p181hjjO029439>