From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42848) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YPOFv-0006VZ-R1 for qemu-devel@nongnu.org; Sat, 21 Feb 2015 23:35:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YPOFq-0005OD-Og for qemu-devel@nongnu.org; Sat, 21 Feb 2015 23:34:59 -0500 Received: from out1134-209.mail.aliyun.com ([42.120.134.209]:44028) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YPOFq-0005ND-ET for qemu-devel@nongnu.org; Sat, 21 Feb 2015 23:34:54 -0500 Message-ID: <54E95E38.2010508@sunrus.com.cn> Date: Sun, 22 Feb 2015 12:42:32 +0800 From: Chen Gang S MIME-Version: 1.0 References: <54E7F5EB.60402@sunrus.com.cn> <54E830DD.4070708@sunrus.com.cn> <54E8A4C9.3000101@sunrus.com.cn> <54E8B352.9040309@twiddle.net> <54E921E2.4070503@sunrus.com.cn> <54E921FF.6000208@ezchip.com> <54E92C1C.9060208@sunrus.com.cn> In-Reply-To: <54E92C1C.9060208@sunrus.com.cn> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] target-tilegx: Finish decoding the first TB block. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Chris Metcalf , Richard Henderson , Peter Maydell , Riku Voipio , "walt@tilera.com" Cc: qemu-devel On 2/22/15 09:08, Chen Gang S wrote: > On 2/22/15 08:25, Chris Metcalf wrote: [...] >> Similarly, if any pipeline takes an exception (a TLB fault from a memory op, >> a GPV fault from an illegal mfspr, etc) then no pipeline completes its action. >> > > Oh, really !! And I guess, Richard's code can not be sure of it: memory > write operand (e.g st) is not buffered. If what I guess is correct, for > me, it is not quite easy to fix this issue. > > I also guess, at present, we need think of more before continue. > Oh, Richard's code is still OK, but always be sure that y2 and x1 must be the last pipe execution of the bundle: - Execute y0/y1/x0 which will save temporary changing: they are only have effect with registers, have no effect with others (e.g. memory value). Temporary variable can also be for SPR, so y1 is also OK. - Execute y2/x1, if they fail, just generate exception, then as the result, we can say "the whole bundle is not executed". - After finish y2/x1, we write back register temporary variables, then write back branch temporary variables. Thanks. -- Chen Gang Open, share, and attitude like air, water, and life which God blessed