From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38652) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a7XHW-0000RY-79 for qemu-devel@nongnu.org; Fri, 11 Dec 2015 18:39:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a7XHV-0003yW-Dw for qemu-devel@nongnu.org; Fri, 11 Dec 2015 18:39:22 -0500 Sender: Richard Henderson References: <1449773244-17078-1-git-send-email-serge.fdrv@gmail.com> From: Richard Henderson Message-ID: <566B5E9E.8040108@twiddle.net> Date: Fri, 11 Dec 2015 15:39:10 -0800 MIME-Version: 1.0 In-Reply-To: <1449773244-17078-1-git-send-email-serge.fdrv@gmail.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] target-*: Get rid of "PC advancement" trick List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Sergey Fedorov , qemu-devel@nongnu.org Cc: Peter Maydell , Eduardo Habkost , Anthony Green , Alexander Graf , Max Filippov , Michael Walle , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Paolo Bonzini , "Edgar E. Iglesias" , Guan Xuetao , Leon Alrae , Aurelien Jarno , Jia Liu On 12/10/2015 10:47 AM, Sergey Fedorov wrote: > The "PC advancement" trick was used just after recognizing that a > breakpoint exception was going to be generated. This trick has had two > points: > 1. Guarantee that tb->size isn't zero: there are many places where it's > expected to be non-zero. In fact, that is even stated in the comment > for this field. > 2. Try to satisfy disassembler's check for instruction length. To this > end, PC advancement was done for estimated instruction length, but > actually, didn't work properly in variable-instruction-length cases. > > Substitute this trick with checking for TB size at the end of > translation. If we get an empty TB then just set tb->size to 1 and skip > disassembling. Setting tb->size to 1 is enough to get correct behaviour, > whereas an empty TB doesn't obviously need to be disassembled. This doesn't help when the TB already has instructions, the TB would ordinarily cross a page boundary, and the breakpoint is at the page boundary. r~