Revision 29e922b6 qemu-timer.c
b/qemu-timer.c | ||
---|---|---|
53 | 53 |
#include <mmsystem.h> |
54 | 54 |
#endif |
55 | 55 |
|
56 |
#include "cpu-defs.h" |
|
57 | 56 |
#include "qemu-timer.h" |
58 |
#include "exec-all.h" |
|
59 | 57 |
|
60 | 58 |
/* Conversion factor from emulated instructions to virtual clock ticks. */ |
61 |
static int icount_time_shift;
|
|
59 |
int icount_time_shift; |
|
62 | 60 |
/* Arbitrarily pick 1MIPS as the minimum allowable speed. */ |
63 | 61 |
#define MAX_ICOUNT_SHIFT 10 |
64 | 62 |
/* Compensate for varying guest execution speed. */ |
65 |
static int64_t qemu_icount_bias;
|
|
63 |
int64_t qemu_icount_bias; |
|
66 | 64 |
static QEMUTimer *icount_rt_timer; |
67 | 65 |
static QEMUTimer *icount_vm_timer; |
68 | 66 |
|
... | ... | |
138 | 136 |
} |
139 | 137 |
#endif |
140 | 138 |
|
141 |
/* Return the virtual CPU time, based on the instruction counter. */ |
|
142 |
static int64_t cpu_get_icount(void) |
|
143 |
{ |
|
144 |
int64_t icount; |
|
145 |
CPUState *env = cpu_single_env;; |
|
146 |
icount = qemu_icount; |
|
147 |
if (env) { |
|
148 |
if (!can_do_io(env)) |
|
149 |
fprintf(stderr, "Bad clock read\n"); |
|
150 |
icount -= (env->icount_decr.u16.low + env->icount_extra); |
|
151 |
} |
|
152 |
return qemu_icount_bias + (icount << icount_time_shift); |
|
153 |
} |
|
154 |
|
|
155 | 139 |
/***********************************************************/ |
156 | 140 |
/* guest cycle counter */ |
157 | 141 |
|
Also available in: Unified diff