From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KqCWO-0001Tr-6q for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:59:04 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KqCWK-0001Rl-F2 for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:59:01 -0400 Received: from [199.232.76.173] (port=36794 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KqCWJ-0001RN-JD for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:58:59 -0400 Received: from mx2.redhat.com ([66.187.237.31]:49485) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KqCWI-0001L2-Ew for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:58:59 -0400 From: Glauber Costa Date: Wed, 15 Oct 2008 19:55:08 -0200 Message-Id: <1224107718-19128-12-git-send-email-glommer@redhat.com> In-Reply-To: <1224107718-19128-1-git-send-email-glommer@redhat.com> References: <1224107718-19128-1-git-send-email-glommer@redhat.com> Subject: [Qemu-devel] [PATCH 11/21] 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 4cdfaf5..45ad1ee 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 1f0d41b..c305e8c 100644 --- a/accel.h +++ b/accel.h @@ -10,6 +10,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; @@ -60,4 +63,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 9c3d0c5..e1c2dc3 100644 --- a/kqemu.c +++ b/kqemu.c @@ -444,6 +444,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 }; -- 1.5.5.1