From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JweAO-0005gM-2E for qemu-devel@nongnu.org; Thu, 15 May 2008 10:10:44 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JweAM-0005fF-Bs for qemu-devel@nongnu.org; Thu, 15 May 2008 10:10:42 -0400 Received: from [199.232.76.173] (port=37572 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JweAM-0005ey-2C for qemu-devel@nongnu.org; Thu, 15 May 2008 10:10:42 -0400 Received: from mx1.redhat.com ([66.187.233.31]:36005) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JweAL-0003GS-CO for qemu-devel@nongnu.org; Thu, 15 May 2008 10:10:41 -0400 From: Glauber Costa Date: Thu, 15 May 2008 11:09:32 -0300 Message-Id: <12108606181066-git-send-email-gcosta@redhat.com> In-Reply-To: <12108606151640-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> Subject: [Qemu-devel] [PATCH 12/13] [PATCH] remove kqemu reference from hw/pc.c Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kvm-devel@lists.sourceforge.net 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