|
@@ -149,6 +149,10 @@ static MemTxResult systick_write(void *opaque, hwaddr addr,
|
|
s->control &= 0xfffffff8;
|
|
s->control &= 0xfffffff8;
|
|
s->control |= value & 7;
|
|
s->control |= value & 7;
|
|
|
|
|
|
|
|
+ if ((oldval ^ value) & SYSTICK_CLKSOURCE) {
|
|
|
|
+ systick_set_period_from_clock(s);
|
|
|
|
+ }
|
|
|
|
+
|
|
if ((oldval ^ value) & SYSTICK_ENABLE) {
|
|
if ((oldval ^ value) & SYSTICK_ENABLE) {
|
|
if (value & SYSTICK_ENABLE) {
|
|
if (value & SYSTICK_ENABLE) {
|
|
ptimer_run(s->ptimer, 0);
|
|
ptimer_run(s->ptimer, 0);
|
|
@@ -156,10 +160,6 @@ static MemTxResult systick_write(void *opaque, hwaddr addr,
|
|
ptimer_stop(s->ptimer);
|
|
ptimer_stop(s->ptimer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- if ((oldval ^ value) & SYSTICK_CLKSOURCE) {
|
|
|
|
- systick_set_period_from_clock(s);
|
|
|
|
- }
|
|
|
|
ptimer_transaction_commit(s->ptimer);
|
|
ptimer_transaction_commit(s->ptimer);
|
|
break;
|
|
break;
|
|
}
|
|
}
|