From owner-svn-src-projects@FreeBSD.ORG Fri Nov 30 05:40:25 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 BB72935A; Fri, 30 Nov 2012 05:40:25 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 9E1B78FC16; Fri, 30 Nov 2012 05:40:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qAU5ePjN024990; Fri, 30 Nov 2012 05:40:25 GMT (envelope-from grehan@svn.freebsd.org) Received: (from grehan@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id qAU5ePZj024989; Fri, 30 Nov 2012 05:40:25 GMT (envelope-from grehan@svn.freebsd.org) Message-Id: <201211300540.qAU5ePZj024989@svn.freebsd.org> From: Peter Grehan Date: Fri, 30 Nov 2012 05:40:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r243703 - projects/bhyve/sys/amd64/vmm X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: Fri, 30 Nov 2012 05:40:26 -0000 Author: grehan Date: Fri Nov 30 05:40:24 2012 New Revision: 243703 URL: http://svnweb.freebsd.org/changeset/base/243703 Log: Properly screen for the AND 0x81 instruction from the set of group1 0x81 instructions that use the reg bits as an extended opcode. Still todo: properly update rflags. Pointed out by: jilles@ Modified: projects/bhyve/sys/amd64/vmm/vmm_instruction_emul.c Modified: projects/bhyve/sys/amd64/vmm/vmm_instruction_emul.c ============================================================================== --- projects/bhyve/sys/amd64/vmm/vmm_instruction_emul.c Fri Nov 30 05:30:31 2012 (r243702) +++ projects/bhyve/sys/amd64/vmm/vmm_instruction_emul.c Fri Nov 30 05:40:24 2012 (r243703) @@ -83,6 +83,7 @@ static const struct vie_op one_byte_opco .op_type = VIE_OP_TYPE_AND, }, [0x81] = { + /* XXX Group 1 extended opcode - not just AND */ .op_byte = 0x81, .op_type = VIE_OP_TYPE_AND, .op_flags = VIE_OP_F_IMM, @@ -311,7 +312,13 @@ emulate_and(void *vm, int vcpuid, uint64 * * 81/ and r/m32, imm32 * REX.W + 81/ and r/m64, imm32 sign-extended to 64 + * + * Currently, only the AND operation of the 0x81 opcode + * is implemented (ModRM:reg = b100). */ + if ((vie->reg & 7) != 4) + break; + if (vie->rex_w) size = 8;