From mboxrd@z Thu Jan 1 00:00:00 1970 From: Borislav Petkov Subject: Re: [PATCH -v2] kvm: Emulate MOVBE Date: Sun, 21 Apr 2013 14:23:21 +0200 Message-ID: <20130421122321.GD4594@pd.tnic> References: <20130409234602.GI5077@pd.tnic> <20130410112942.07dfc167@slackpad> <20130410100845.GB17919@redhat.com> <20130410123901.46b65169@slackpad> <20130410121639.GE17919@redhat.com> <20130411001815.GA17544@pd.tnic> <20130414084303.GE17919@redhat.com> <20130414210218.GF20547@pd.tnic> <516D37A0.2070706@redhat.com> <20130421114649.GC4594@pd.tnic> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Cc: Gleb Natapov , Andre Przywara , kvm@vger.kernel.org, =?utf-8?B?SsO2cmcgUsO2ZGVs?= , "H. Peter Anvin" , x86-ml To: Paolo Bonzini Return-path: Received: from mail.skyhub.de ([78.46.96.112]:39491 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753155Ab3DUMW7 (ORCPT ); Sun, 21 Apr 2013 08:22:59 -0400 Content-Disposition: inline In-Reply-To: <20130421114649.GC4594@pd.tnic> Sender: kvm-owner@vger.kernel.org List-ID: On Sun, Apr 21, 2013 at 01:46:50PM +0200, Borislav Petkov wrote: > We probably need something with copying values to a temp variable or so. Basically something like that: case 2: /* * From MOVBE definition: "...When the operand size is 16 bits, * the upper word of the destination register remains unchanged * ..." * * Both casting ->valptr and ->val to u16 breaks strict aliasing * rules so we have to do the operation almost per hand. */ tmp = (u16)ctxt->src.val; ctxt->dst.val &= ~0xffffUL; ctxt->dst.val |= (unsigned long)swab16(tmp); break; This passes all gcc checks, even the stricter ones when building with W=3. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. --