Revision 6ee093c9 hw/mc146818rtc.c
b/hw/mc146818rtc.c | ||
---|---|---|
109 | 109 |
/* divide each RTC interval to 2 - 8 smaller intervals */ |
110 | 110 |
int c = MIN(s->irq_coalesced, 7) + 1; |
111 | 111 |
int64_t next_clock = qemu_get_clock(vm_clock) + |
112 |
muldiv64(s->period / c, ticks_per_sec, 32768);
|
|
112 |
muldiv64(s->period / c, get_ticks_per_sec(), 32768);
|
|
113 | 113 |
qemu_mod_timer(s->coalesced_timer, next_clock); |
114 | 114 |
} |
115 | 115 |
} |
... | ... | |
159 | 159 |
s->period = period; |
160 | 160 |
#endif |
161 | 161 |
/* compute 32 khz clock */ |
162 |
cur_clock = muldiv64(current_time, 32768, ticks_per_sec);
|
|
162 |
cur_clock = muldiv64(current_time, 32768, get_ticks_per_sec());
|
|
163 | 163 |
next_irq_clock = (cur_clock & ~(period - 1)) + period; |
164 |
s->next_periodic_time = muldiv64(next_irq_clock, ticks_per_sec, 32768) + 1;
|
|
164 |
s->next_periodic_time = muldiv64(next_irq_clock, get_ticks_per_sec(), 32768) + 1;
|
|
165 | 165 |
qemu_mod_timer(s->periodic_timer, s->next_periodic_time); |
166 | 166 |
} else { |
167 | 167 |
#ifdef TARGET_I386 |
... | ... | |
380 | 380 |
|
381 | 381 |
/* if the oscillator is not in normal operation, we do not update */ |
382 | 382 |
if ((s->cmos_data[RTC_REG_A] & 0x70) != 0x20) { |
383 |
s->next_second_time += ticks_per_sec;
|
|
383 |
s->next_second_time += get_ticks_per_sec();
|
|
384 | 384 |
qemu_mod_timer(s->second_timer, s->next_second_time); |
385 | 385 |
} else { |
386 | 386 |
rtc_next_second(&s->current_tm); |
... | ... | |
391 | 391 |
} |
392 | 392 |
/* should be 244 us = 8 / 32768 seconds, but currently the |
393 | 393 |
timers do not have the necessary resolution. */ |
394 |
delay = (ticks_per_sec * 1) / 100;
|
|
394 |
delay = (get_ticks_per_sec() * 1) / 100;
|
|
395 | 395 |
if (delay < 1) |
396 | 396 |
delay = 1; |
397 | 397 |
qemu_mod_timer(s->second_timer2, |
... | ... | |
431 | 431 |
/* clear update in progress bit */ |
432 | 432 |
s->cmos_data[RTC_REG_A] &= ~REG_A_UIP; |
433 | 433 |
|
434 |
s->next_second_time += ticks_per_sec;
|
|
434 |
s->next_second_time += get_ticks_per_sec();
|
|
435 | 435 |
qemu_mod_timer(s->second_timer, s->next_second_time); |
436 | 436 |
} |
437 | 437 |
|
... | ... | |
616 | 616 |
s->second_timer2 = qemu_new_timer(vm_clock, |
617 | 617 |
rtc_update_second2, s); |
618 | 618 |
|
619 |
s->next_second_time = qemu_get_clock(vm_clock) + (ticks_per_sec * 99) / 100;
|
|
619 |
s->next_second_time = qemu_get_clock(vm_clock) + (get_ticks_per_sec() * 99) / 100;
|
|
620 | 620 |
qemu_mod_timer(s->second_timer2, s->next_second_time); |
621 | 621 |
|
622 | 622 |
register_ioport_write(base, 2, 1, cmos_ioport_write, s); |
... | ... | |
754 | 754 |
s->second_timer2 = qemu_new_timer(vm_clock, |
755 | 755 |
rtc_update_second2, s); |
756 | 756 |
|
757 |
s->next_second_time = qemu_get_clock(vm_clock) + (ticks_per_sec * 99) / 100;
|
|
757 |
s->next_second_time = qemu_get_clock(vm_clock) + (get_ticks_per_sec() * 99) / 100;
|
|
758 | 758 |
qemu_mod_timer(s->second_timer2, s->next_second_time); |
759 | 759 |
|
760 | 760 |
io_memory = cpu_register_io_memory(rtc_mm_read, rtc_mm_write, s); |
Also available in: Unified diff