From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45187) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zqfh8-0003tp-1l for qemu-devel@nongnu.org; Mon, 26 Oct 2015 07:12:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zqfh4-0007Fl-R2 for qemu-devel@nongnu.org; Mon, 26 Oct 2015 07:12:05 -0400 Received: from mail-bn1on0066.outbound.protection.outlook.com ([157.56.110.66]:27616 helo=na01-bn1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zqfh4-0007Ff-KV for qemu-devel@nongnu.org; Mon, 26 Oct 2015 07:12:02 -0400 Date: Mon, 26 Oct 2015 11:57:52 +0100 From: "Edgar E. Iglesias" Message-ID: <20151026105752.GE3751@toto> References: <1444863346-9711-1-git-send-email-edgar.iglesias@gmail.com> <1444863346-9711-4-git-send-email-edgar.iglesias@gmail.com> <20151026092018.GA3751@toto> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH v4 03/13] target-arm: Add support for AArch32 S2 negative t0sz List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: QEMU Developers , Alexander Graf , Sergey Fedorov , Laurent Desnogues , "Edgar E. Iglesias" , Alex =?iso-8859-1?Q?Benn=E9e?= On Mon, Oct 26, 2015 at 09:52:12AM +0000, Peter Maydell wrote: > On 26 October 2015 at 09:20, Edgar E. Iglesias > wrote: > > Yes, sounds good. I've changed the patch to the following: > > > > @@ -6521,8 +6521,24 @@ static bool get_phys_addr_lpae(CPUARMState *env, target_ulong address, > > */ > > int32_t t0sz = extract32(tcr->raw_tcr, 0, 6); > > if (va_size == 64) { > > + /* AArch64 translation. */ > > t0sz = MIN(t0sz, 39); > > t0sz = MAX(t0sz, 16); > > + } else if (mmu_idx != ARMMMUIdx_S2NS) { > > + /* AArch32 stage 1 translation. */ > > + t0sz = extract32(t0sz, 0, 3); > > + } else { > > + /* AArch32 stage 2 translation. */ > > + bool sext = extract32(t0sz, 4, 1); > > + bool sign = extract32(t0sz, 3, 1); > > + t0sz = sextract32(t0sz, 0, 4); > > + > > + /* If the sign-extend bit is not the same as t0sz[3], the result > > + * is unpredictable. Flag this as a guest error. */ > > + if (sign != sext) { > > + qemu_log_mask(LOG_GUEST_ERROR, > > + "AArch32: VTCR.S / VTCR.T0SZ[3] missmatch\n"); > > + } > > } > > > > Looks good, but maybe we should just do all the extracts > on tcr->raw_tcr, rather than extracting 6 bits of it and > then re-extracting some subset of bits from that extract > (for the 32-bit stage 1 case in particular it would be > simpler). OK, I've rearranged the code a bit to use raw_tcr. Thanks, Edgar