summaryrefslogtreecommitdiffstats
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
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
-rw-r--r--c/src/lib/libcpu/powerpc/ChangeLog5
-rw-r--r--c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c3
2 files changed, 8 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/powerpc/ChangeLog b/c/src/lib/libcpu/powerpc/ChangeLog
index 8121787325..3735ae2d95 100644
--- a/c/src/lib/libcpu/powerpc/ChangeLog
+++ b/c/src/lib/libcpu/powerpc/ChangeLog
@@ -1,3 +1,8 @@
+2005-11-03 straumanatslacdotstanford.edu
+
+ * mpc6xx/clock/c_clock.c: disable interrupts around decrementer update
+ to eliminate a race condition
+
2005-11-02 straumanatslacdotstanford.edu
* mpc6xx/mmu/pte121.c, mpc6xx/mmu/pte121.h: enhancements to mpc6xx page
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;