diff options
Diffstat (limited to 'sys/arm/mv/timer.c')
-rw-r--r-- | sys/arm/mv/timer.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/arm/mv/timer.c b/sys/arm/mv/timer.c index bcc4e81d1d8e..fb3b321a689f 100644 --- a/sys/arm/mv/timer.c +++ b/sys/arm/mv/timer.c @@ -178,14 +178,14 @@ mv_hardclock(void *arg) struct mv_timer_softc *sc; uint32_t irq_cause; - sc = (struct mv_timer_softc *)arg; - if (sc->et.et_active) - sc->et.et_event_cb(&sc->et, sc->et.et_arg); - irq_cause = read_cpu_ctrl(BRIDGE_IRQ_CAUSE); irq_cause &= ~(IRQ_TIMER0); write_cpu_ctrl(BRIDGE_IRQ_CAUSE, irq_cause); + sc = (struct mv_timer_softc *)arg; + if (sc->et.et_active) + sc->et.et_event_cb(&sc->et, sc->et.et_arg); + return (FILTER_HANDLED); } @@ -394,6 +394,8 @@ mv_timer_start(struct eventtimer *et, val |= CPU_TIMER0_EN; if (period != NULL) val |= CPU_TIMER0_AUTO; + else + val &= ~CPU_TIMER0_AUTO; mv_set_timer_control(val); return (0); } |