Revision 74475455 hw/armv7m_nvic.c
b/hw/armv7m_nvic.c | ||
---|---|---|
64 | 64 |
static void systick_reload(nvic_state *s, int reset) |
65 | 65 |
{ |
66 | 66 |
if (reset) |
67 |
s->systick.tick = qemu_get_clock(vm_clock); |
|
67 |
s->systick.tick = qemu_get_clock_ns(vm_clock);
|
|
68 | 68 |
s->systick.tick += (s->systick.reload + 1) * systick_scale(s); |
69 | 69 |
qemu_mod_timer(s->systick.timer, s->systick.tick); |
70 | 70 |
} |
... | ... | |
136 | 136 |
int64_t t; |
137 | 137 |
if ((s->systick.control & SYSTICK_ENABLE) == 0) |
138 | 138 |
return 0; |
139 |
t = qemu_get_clock(vm_clock); |
|
139 |
t = qemu_get_clock_ns(vm_clock);
|
|
140 | 140 |
if (t >= s->systick.tick) |
141 | 141 |
return 0; |
142 | 142 |
val = ((s->systick.tick - (t + 1)) / systick_scale(s)) + 1; |
... | ... | |
273 | 273 |
s->systick.control &= 0xfffffff8; |
274 | 274 |
s->systick.control |= value & 7; |
275 | 275 |
if ((oldval ^ value) & SYSTICK_ENABLE) { |
276 |
int64_t now = qemu_get_clock(vm_clock); |
|
276 |
int64_t now = qemu_get_clock_ns(vm_clock);
|
|
277 | 277 |
if (value & SYSTICK_ENABLE) { |
278 | 278 |
if (s->systick.tick) { |
279 | 279 |
s->systick.tick += now; |
... | ... | |
396 | 396 |
|
397 | 397 |
gic_init(&s->gic); |
398 | 398 |
cpu_register_physical_memory(0xe000e000, 0x1000, s->gic.iomemtype); |
399 |
s->systick.timer = qemu_new_timer(vm_clock, systick_timer_tick, s); |
|
399 |
s->systick.timer = qemu_new_timer_ns(vm_clock, systick_timer_tick, s);
|
|
400 | 400 |
register_savevm(&dev->qdev, "armv7m_nvic", -1, 1, nvic_save, nvic_load, s); |
401 | 401 |
return 0; |
402 | 402 |
} |
Also available in: Unified diff