--- a/hw/slavio_timer.c
+++ b/hw/slavio_timer.c
@@ -232,6 +231,12 @@ static void slavio_timer_mem_writel(void *opaque,
target_phys_addr_t addr,
                 } else {
                     ptimer_set_limit(t->timer, LIMIT_TO_PERIODS(t->limit), 1);
                 }
+                if (t->running) {
+                    ptimer_stop(t->timer);
+                    ptimer_run(t->timer, 0);
+
+                }
+
             }
         }
