Instead, route cpu_get_ticks through accel driver. --- exec-all.h | 11 +++++++++++ hw/pc.c | 13 ++----------- kqemu.c | 4 ++++ 3 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/exec-all.h b/exec-all.h index 04112e0..f62ff38 100644 --- a/exec-all.h +++ b/exec-all.h @@ -587,6 +587,7 @@ typedef struct QEMUAccel { int (*profile)(CPUState *env, char *buf); void (*set_notdirty)(ram_addr_t addr); void (*modify_page)(ram_addr_t addr, int dirty_flags); + uint64_t (*get_real_ticks)(void); } QEMUAccel; extern QEMUAccel *current_accel; @@ -646,6 +647,16 @@ static inline void accel_modify_page(target_ulong addr, int dirty_flags) current_accel->modify_page(addr, dirty_flags); } +int64_t cpu_get_ticks(void); + +static inline uint64_t accel_get_real_ticks(void) +{ + if (current_accel && current_accel->get_real_ticks) + return current_accel->get_real_ticks(); + return cpu_get_ticks(); +} + + #ifdef USE_KQEMU #define KQEMU_MODIFY_PAGE_MASK (0xff & ~(VGA_DIRTY_FLAG | CODE_DIRTY_FLAG)) diff --git a/hw/pc.c b/hw/pc.c index c92384c..43ff2f2 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -32,6 +32,7 @@ #include "smbus.h" #include "boards.h" #include "console.h" +#include "exec-all.h" /* output Bochs bios info messages */ //#define DEBUG_BIOS @@ -73,17 +74,7 @@ static void ioportF0_write(void *opaque, uint32_t addr, uint32_t data) /* TSC handling */ uint64_t cpu_get_tsc(CPUX86State *env) { - /* Note: when using kqemu, it is more logical to return the host TSC - because kqemu does not trap the RDTSC instruction for - performance reasons */ -#if USE_KQEMU - if (env->kqemu_enabled) { - return cpu_get_real_ticks(); - } else -#endif - { - return cpu_get_ticks(); - } + return accel_get_real_ticks(); } /* SMM support */ diff --git a/kqemu.c b/kqemu.c index 7e24bb7..fbd8b66 100644 --- a/kqemu.c +++ b/kqemu.c @@ -412,6 +412,10 @@ QEMUAccel kqemu_accel = { .profile = kqemu_profile, .set_notdirty = kqemu_set_notdirty, .modify_page = kqemu_modify_page, + /* Note: when using kqemu, it is more logical to return the host TSC + because kqemu does not trap the RDTSC instruction for + performance reasons */ + .get_real_ticks = cpu_get_real_ticks, }; -- 1.5.5 ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel