summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2005-11-03 18:35:07 +0000
committerTill Straumann <strauman@slac.stanford.edu>2005-11-03 18:35:07 +0000
commitcc9073d19bd8ece2f556e8af8f0b89b278e9efb6 (patch)
tree6fdb6aca562b97ff46bd8eb19456d1bfd063d819 /c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c
parent2005-11-03 Ralf Corsepius <ralf.corsepius@rtems.org> (diff)
downloadrtems-cc9073d19bd8ece2f556e8af8f0b89b278e9efb6.tar.bz2
2005-11-03 straumanatslacdotstanford.edu
* mpc6xx/clock/c_clock.c: disable interrupts around decrementer update to eliminate a race condition
Diffstat (limited to 'c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c')
-rw-r--r--c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c b/c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c
index 7bdc1f7fe9..fd69920071 100644
--- a/c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c
+++ b/c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c
@@ -81,7 +81,10 @@ int decr;
* The driver has seen another tick.
*/
do {
+ register uint32_t flags;
+ rtems_interrupt_disable(flags);
asm volatile ("mfdec %0; add %0, %0, %1; mtdec %0":"=&r"(decr):"r"(Clock_Decrementer_value));
+ rtems_interrupt_enable(flags);
Clock_driver_ticks += 1;