svn commit: r218426 - head/sys/arm/mv
Marcel Moolenaar
marcel at FreeBSD.org
Tue Feb 8 01:43:46 UTC 2011
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;
}
More information about the svn-src-head
mailing list