From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KszDk-0007Am-Cb for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KszDg-00078P-3t for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:18 -0400 Received: from [199.232.76.173] (port=51703 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KszDf-00078A-QF for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:15 -0400 Received: from mx2.redhat.com ([66.187.237.31]:54654) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KszDa-0006GG-OP for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:15 -0400 From: Glauber Costa Date: Thu, 23 Oct 2008 12:19:00 -0200 Message-Id: <1224771556-11146-17-git-send-email-glommer@redhat.com> In-Reply-To: <1224771556-11146-1-git-send-email-glommer@redhat.com> References: <1224771556-11146-1-git-send-email-glommer@redhat.com> Subject: [Qemu-devel] [PATCH 16/32] 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: aliguori@us.ibm.com, jan.kiszka@siemens.com, jes@sgi.com, avi@qumranet.com, Glauber Costa , dmitry.baryshkov@siemens.com From: Glauber Costa Instead, route cpu_get_ticks through accel driver. Signed-off-by: Glauber Costa --- accel.c | 3 +++ accel.h | 12 ++++++++++++ hw/pc.c | 13 ++----------- kqemu.c | 6 ++++++ 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/accel.c b/accel.c index d615912..08a85c2 100644 --- a/accel.c +++ b/accel.c @@ -25,5 +25,8 @@ QEMUAccel noaccel = { .profile = accel_nop, .set_notdirty = accel_nop, .modify_page = accel_nop, +#ifndef CONFIG_USER_ONLY + .get_real_ticks = cpu_get_ticks, +#endif }; diff --git a/accel.h b/accel.h index e232f87..cf0d752 100644 --- a/accel.h +++ b/accel.h @@ -12,6 +12,9 @@ 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); +#ifndef CONFIG_USER_ONLY + uint64_t (*get_real_ticks)(void); +#endif } QEMUAccel; extern QEMUAccel *current_accel; @@ -62,4 +65,13 @@ 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); + +#ifndef CONFIG_USER_ONLY +static inline uint64_t accel_get_real_ticks(void) +{ + return current_accel->get_real_ticks(); +} +#endif + #endif diff --git a/hw/pc.c b/hw/pc.c index 34683e7..2f56c1f 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -33,6 +33,7 @@ #include "boards.h" #include "console.h" #include "fw_cfg.h" +#include "accel.h" /* output Bochs bios info messages */ //#define DEBUG_BIOS @@ -75,17 +76,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 */ -#ifdef 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 5777afd..6bce892 100644 --- a/kqemu.c +++ b/kqemu.c @@ -1117,6 +1117,12 @@ QEMUAccel kqemu_accel = { .profile = kqemu_profile, .set_notdirty = kqemu_set_notdirty, .modify_page = kqemu_modify_page, +#ifndef CONFIG_USER_ONLY + /* 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, +#endif }; #endif -- 1.5.5.1