|
@@ -253,19 +253,21 @@ void cpu_update_icount(CPUState *cpu)
|
|
|
|
|
|
int64_t cpu_get_icount_raw(void)
|
|
|
{
|
|
|
- int64_t icount;
|
|
|
CPUState *cpu = current_cpu;
|
|
|
|
|
|
- icount = atomic_read(&timers_state.qemu_icount);
|
|
|
if (cpu && cpu->running) {
|
|
|
if (!cpu->can_do_io) {
|
|
|
fprintf(stderr, "Bad icount read\n");
|
|
|
exit(1);
|
|
|
}
|
|
|
/* Take into account what has run */
|
|
|
- icount += cpu_get_icount_executed(cpu);
|
|
|
+ cpu_update_icount(cpu);
|
|
|
}
|
|
|
- return icount;
|
|
|
+#ifdef CONFIG_ATOMIC64
|
|
|
+ return atomic_read__nocheck(&timers_state.qemu_icount);
|
|
|
+#else /* FIXME: we need 64bit atomics to do this safely */
|
|
|
+ return timers_state.qemu_icount;
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
/* Return the virtual CPU time, based on the instruction counter. */
|