Revision e2a7bb4b vl.c
b/vl.c | ||
---|---|---|
731 | 731 |
qemu_get_clock(vm_clock) + get_ticks_per_sec() / 10); |
732 | 732 |
} |
733 | 733 |
|
734 |
static int64_t qemu_icount_round(int64_t count) |
|
735 |
{ |
|
736 |
return (count + (1 << icount_time_shift) - 1) >> icount_time_shift; |
|
737 |
} |
|
738 |
|
|
734 | 739 |
static struct qemu_alarm_timer alarm_timers[] = { |
735 | 740 |
#ifndef _WIN32 |
736 | 741 |
#ifdef __linux__ |
... | ... | |
3960 | 3965 |
qemu_icount -= (env->icount_decr.u16.low + env->icount_extra); |
3961 | 3966 |
env->icount_decr.u16.low = 0; |
3962 | 3967 |
env->icount_extra = 0; |
3963 |
count = qemu_next_deadline(); |
|
3964 |
count = (count + (1 << icount_time_shift) - 1) |
|
3965 |
>> icount_time_shift; |
|
3968 |
count = qemu_icount_round (qemu_next_deadline()); |
|
3966 | 3969 |
qemu_icount += count; |
3967 | 3970 |
decr = (count > 0xffff) ? 0xffff : count; |
3968 | 3971 |
count -= decr; |
... | ... | |
4072 | 4075 |
if (add > 10000000) |
4073 | 4076 |
add = 10000000; |
4074 | 4077 |
delta += add; |
4075 |
add = (add + (1 << icount_time_shift) - 1) |
|
4076 |
>> icount_time_shift; |
|
4077 |
qemu_icount += add; |
|
4078 |
qemu_icount += qemu_icount_round (add); |
|
4078 | 4079 |
timeout = delta / 1000000; |
4079 | 4080 |
if (timeout < 0) |
4080 | 4081 |
timeout = 0; |
Also available in: Unified diff