From owner-svn-src-projects@FreeBSD.ORG Sun Oct 21 12:10:13 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 79DB05F2; Sun, 21 Oct 2012 12:10:13 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (unknown [IPv6:2001:610:1108:5012::107]) by mx1.freebsd.org (Postfix) with ESMTP id 0E6C18FC0C; Sun, 21 Oct 2012 12:10:13 +0000 (UTC) Received: from snail.stack.nl (snail.stack.nl [IPv6:2001:610:1108:5010::131]) by mx1.stack.nl (Postfix) with ESMTP id 421A41203C5; Sun, 21 Oct 2012 14:10:07 +0200 (CEST) Received: by snail.stack.nl (Postfix, from userid 1677) id 2A1532848C; Sun, 21 Oct 2012 14:10:07 +0200 (CEST) Date: Sun, 21 Oct 2012 14:10:07 +0200 From: Jilles Tjoelker To: Peter Grehan Subject: Re: svn commit: r241744 - projects/bhyve/usr.sbin/bhyve Message-ID: <20121021121006.GA96141@stack.nl> References: <201210191811.q9JIBIQu049356@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201210191811.q9JIBIQu049356@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Oct 2012 12:10:13 -0000 On Fri, Oct 19, 2012 at 06:11:18PM +0000, Peter Grehan wrote: > Author: grehan > Date: Fri Oct 19 18:11:17 2012 > New Revision: 241744 > URL: http://svn.freebsd.org/changeset/base/241744 > [snip] > instruction_emul.c/h - remove old region interface. > Use gpa from EPT exit to avoid a tablewalk to > determine operand address. Determine operand size > and use when calling through to region handler. > [snip] > Modified: projects/bhyve/usr.sbin/bhyve/instruction_emul.c > ============================================================================== > --- projects/bhyve/usr.sbin/bhyve/instruction_emul.c Fri Oct 19 17:45:56 2012 (r241743) > +++ projects/bhyve/usr.sbin/bhyve/instruction_emul.c Fri Oct 19 18:11:17 2012 (r241744) > [snip] > +static uint64_t > +adjust_write(uint64_t reg, uint64_t operand, int size) > +{ > + uint64_t val; > + > + switch (size) { > + case 1: > + val = (reg & ~0xff) | (operand & 0xff); > + break; > + case 2: > + val = (reg & ~0xffff) | (operand & 0xffff); > + break; > + case 4: > + val = (reg & ~0xffffffff) | (operand & 0xffffffff); > + break; > + case 8: > + val = operand; > + default: > + break; > + } > + > + return (val); > } Case 4 looks wrong. A 32-bit write clears the top 32 bits of the register instead of preserving them. I have no idea whether this will actually fix/break anything. -- Jilles Tjoelker