diff options
-rw-r--r-- | c/src/lib/libcpu/powerpc/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/mpc6xx/clock/c_clock.c | 3 |
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; |