aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-sa1100/time.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-sa1100/time.c')
-rw-r--r--arch/arm/mach-sa1100/time.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/arch/arm/mach-sa1100/time.c b/arch/arm/mach-sa1100/time.c
index 0eeb3616ffea..a084b38698cf 100644
--- a/arch/arm/mach-sa1100/time.c
+++ b/arch/arm/mach-sa1100/time.c
@@ -70,15 +70,6 @@ static unsigned long sa1100_gettimeoffset (void)
70 return usec; 70 return usec;
71} 71}
72 72
73/*
74 * We will be entered with IRQs enabled.
75 *
76 * Loop until we get ahead of the free running timer.
77 * This ensures an exact clock tick count and time accuracy.
78 * IRQs are disabled inside the loop to ensure coherence between
79 * lost_ticks (updated in do_timer()) and the match reg value, so we
80 * can use do_gettimeofday() from interrupt handlers.
81 */
82static irqreturn_t 73static irqreturn_t
83sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) 74sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
84{ 75{
@@ -86,6 +77,14 @@ sa1100_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
86 77
87 write_seqlock(&xtime_lock); 78 write_seqlock(&xtime_lock);
88 79
80 /*
81 * Loop until we get ahead of the free running timer.
82 * This ensures an exact clock tick count and time accuracy.
83 * Since IRQs are disabled at this point, coherence between
84 * lost_ticks(updated in do_timer()) and the match reg value is
85 * ensured, hence we can use do_gettimeofday() from interrupt
86 * handlers.
87 */
89 do { 88 do {
90 timer_tick(regs); 89 timer_tick(regs);
91 OSSR = OSSR_M0; /* Clear match on timer 0 */ 90 OSSR = OSSR_M0; /* Clear match on timer 0 */