From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:40914) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T7V07-0001S4-5Q for qemu-devel@nongnu.org; Fri, 31 Aug 2012 13:27:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T7V05-0002vd-Qt for qemu-devel@nongnu.org; Fri, 31 Aug 2012 13:27:23 -0400 Received: from thoth.sbs.de ([192.35.17.2]:25486) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T7V05-0002vT-HK for qemu-devel@nongnu.org; Fri, 31 Aug 2012 13:27:21 -0400 Message-ID: <5040F3F6.7040805@siemens.com> Date: Fri, 31 Aug 2012 19:27:18 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <1346427000-9496-1-git-send-email-Don@CloudSwitch.com> <1346433623-12549-1-git-send-email-Don@CloudSwitch.com> In-Reply-To: <1346433623-12549-1-git-send-email-Don@CloudSwitch.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2] hw: Add VMware's GETHZ command. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Don Slutz Cc: "qemu-devel@nongnu.org" On 2012-08-31 19:20, Don Slutz wrote: > This is known is linux as VMWARE_PORT_CMD_GETHZ. > > Signed-off-by: Don Slutz > --- > hw/vmport.c | 23 ++++++++++++++++++++++- > 1 files changed, 22 insertions(+), 1 deletions(-) > > diff --git a/hw/vmport.c b/hw/vmport.c > index a4f52ee..e856255 100644 > --- a/hw/vmport.c > +++ b/hw/vmport.c > @@ -31,8 +31,9 @@ > > #define VMPORT_CMD_GETVERSION 0x0a > #define VMPORT_CMD_GETRAMSIZE 0x14 > +#define VMPORT_CMD_GETHZ 0x2d > > -#define VMPORT_ENTRIES 0x2c > +#define VMPORT_ENTRIES 0x2e > #define VMPORT_MAGIC 0x564D5868 > > typedef struct _VMPortState > @@ -102,6 +103,25 @@ static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr) > return ram_size; > } > > +static uint32_t vmport_cmd_get_hz(void *opaque, uint32_t addr) > +{ > + CPUX86State *env = cpu_single_env; > + uint64_t value; > + const uint32_t apicHz = 1000000000L; > + > + value = (uint64_t)env->tsc_khz * 1000; > + if (value) { > + /* apic-frequency (bus speed) */ > + env->regs[R_ECX] = apicHz; > + /* High part of tsc-frequency */ > + env->regs[R_EBX] = (uint32_t)(value >> 32); > + /* Low part of tsc-frequency */ > + return (uint32_t)value; > + } else { > + return env->regs[R_EAX]; > + } > +} > + > /* vmmouse helpers */ > void vmmouse_get_data(uint32_t *data) > { > @@ -141,6 +161,7 @@ static int vmport_initfn(ISADevice *dev) > /* Register some generic port commands */ > vmport_register(VMPORT_CMD_GETVERSION, vmport_cmd_get_version, NULL); > vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL); > + vmport_register(VMPORT_CMD_GETHZ, vmport_cmd_get_hz, NULL); > return 0; > } > > Reviewed-by: Jan Kiszka -- Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux