From mboxrd@z Thu Jan 1 00:00:00 1970 From: Glauber Costa Subject: [PATCH 12/13] [PATCH] remove kqemu reference from hw/pc.c Date: Thu, 15 May 2008 11:09:32 -0300 Message-ID: <12108606181066-git-send-email-gcosta@redhat.com> References: <12108605731805-git-send-email-gcosta@redhat.com> <12108605813076-git-send-email-gcosta@redhat.com> <12108605843020-git-send-email-gcosta@redhat.com> <12108605883967-git-send-email-gcosta@redhat.com> <12108605912878-git-send-email-gcosta@redhat.com> <121086059420-git-send-email-gcosta@redhat.com> <12108605981240-git-send-email-gcosta@redhat.com> <12108606012733-git-send-email-gcosta@redhat.com> <12108606053604-git-send-email-gcosta@redhat.com> <12108606081482-git-send-email-gcosta@redhat.com> <12108606121918-git-send-email-gcosta@redhat.com> <12108606151640-git-send-email-gcosta@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel@lists.sourceforge.net, avi@qumranet.com To: qemu-devel@nongnu.org Return-path: In-Reply-To: <12108606151640-git-send-email-gcosta@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces@lists.sourceforge.net Errors-To: kvm-devel-bounces@lists.sourceforge.net List-Id: kvm.vger.kernel.org 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/