From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34020) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vu2uC-0002Ty-6G for qemu-devel@nongnu.org; Fri, 20 Dec 2013 11:26:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vu2u2-00056V-Ir for qemu-devel@nongnu.org; Fri, 20 Dec 2013 11:26:28 -0500 Received: from mail-qe0-x234.google.com ([2607:f8b0:400d:c02::234]:54288) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vu2u2-00056R-Dy for qemu-devel@nongnu.org; Fri, 20 Dec 2013 11:26:18 -0500 Received: by mail-qe0-f52.google.com with SMTP id ne12so2545712qeb.39 for ; Fri, 20 Dec 2013 08:26:18 -0800 (PST) Sender: Richard Henderson Message-ID: <52B46FA4.8070705@twiddle.net> Date: Fri, 20 Dec 2013 08:26:12 -0800 From: Richard Henderson MIME-Version: 1.0 References: <1387293144-11554-1-git-send-email-peter.maydell@linaro.org> <1387293144-11554-3-git-send-email-peter.maydell@linaro.org> <52B33112.7090700@twiddle.net> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 02/21] target-arm: A64: add support for ld/st unsigned imm List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: Patch Tracking , Michael Matz , QEMU Developers , Claudio Fontana , Dirk Mueller , Will Newton , Laurent Desnogues , =?UTF-8?B?QWxleCBCZW5uw6ll?= , "kvmarm@lists.cs.columbia.edu" , Christoffer Dall On 12/20/2013 08:08 AM, Peter Maydell wrote: >> In particular, opc = 2 && size = 2 should be unallocated. > > This is LDRSW (immediate), not unallocated, isn't it? > > I agree the decode logic isn't laid out the same as the ARM ARM, > but I'm pretty sure it's correct. Oops, typo: opc=3 && size=2. Basically, if opc<1> == '0' then // store or zero-extending load memop = if opc<0> == '1' then MemOp_LOAD else MemOp_STORE; regsize = if size == '11' then 64 else 32; signed = FALSE; else if size == '11' then memop = MemOp_PREFETCH; if opc<0> == '1' then UnallocatedEncoding(); else // sign-extending load memop = MemOp_LOAD; if size == '10' && opc<0> == '1' then UnallocatedEncoding(); this one ----^ r~