vserver 1.9.5.x5
[linux-2.6.git] / arch / arm / mach-lh7a40x / time.c
index f4943ca..51e1c81 100644 (file)
@@ -20,6 +20,7 @@
 #include <asm/leds.h>
 
 #include <asm/mach/time.h>
+#include "common.h"
 
 #if HZ < 100
 # define TIMER_CONTROL TIMER_CONTROL2
 static irqreturn_t
 lh7a40x_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 {
+       write_seqlock(&xtime_lock);
+
        TIMER_EOI = 0;
        timer_tick(regs);
 
+       write_sequnlock(&xtime_lock);
+
        return IRQ_HANDLED;
 }
 
@@ -52,7 +57,7 @@ static struct irqaction lh7a40x_timer_irq = {
        .handler        = lh7a40x_timer_interrupt
 };
 
-void __init lh7a40x_init_time(void)
+static void __init lh7a40x_timer_init(void)
 {
                                /* Stop/disable all timers */
        TIMER_CONTROL1 = 0;
@@ -65,3 +70,6 @@ void __init lh7a40x_init_time(void)
        TIMER_CONTROL = TIMER_MODE;
 }
 
+struct sys_timer lh7a40x_timer = {
+       .init           = &lh7a40x_timer_init,
+};