vserver 1.9.5.x5
[linux-2.6.git] / arch / arm / mach-epxa10db / time.c
index 7d72a43..1b991f3 100644 (file)
@@ -43,11 +43,13 @@ __initcall(epxa10db_rtc_init);
 static irqreturn_t
 epxa10db_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 {
+       write_seqlock(&xtime_lock);
 
        // ...clear the interrupt
        *TIMER0_CR(IO_ADDRESS(EXC_TIMER00_BASE))|=TIMER0_CR_CI_MSK;
 
        timer_tick(regs);
+       write_sequnlock(&xtime_lock);
 
        return IRQ_HANDLED;
 }
@@ -61,7 +63,7 @@ static struct irqaction epxa10db_timer_irq = {
 /*
  * Set up timer interrupt, and return the current time in seconds.
  */
-void __init epxa10db_init_time(void)
+static void __init epxa10db_timer_init(void)
 {
        /* Start the timer */
        *TIMER0_LIMIT(IO_ADDRESS(EXC_TIMER00_BASE))=(unsigned int)(EXC_AHB2_CLK_FREQUENCY/200);
@@ -71,3 +73,6 @@ void __init epxa10db_init_time(void)
        setup_irq(IRQ_TIMER0, &epxa10db_timer_irq);
 }
 
+struct sys_timer epxa10db_timer = {
+       .init           = epxa10db_timer_init,
+};