From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LA2RP-0006ad-Dt for qemu-devel@nongnu.org; Tue, 09 Dec 2008 08:15:55 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LA2RN-0006ZZ-Oz for qemu-devel@nongnu.org; Tue, 09 Dec 2008 08:15:54 -0500 Received: from [199.232.76.173] (port=39992 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LA2RN-0006ZW-M3 for qemu-devel@nongnu.org; Tue, 09 Dec 2008 08:15:53 -0500 Received: from ns.suse.de ([195.135.220.2]:41259 helo=mx1.suse.de) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LA2RN-0006Nn-Mh for qemu-devel@nongnu.org; Tue, 09 Dec 2008 08:15:53 -0500 Received: from Relay1.suse.de (relay-ext.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id 03A96458C0 for ; Tue, 9 Dec 2008 14:14:20 +0100 (CET) Message-ID: <493E6F2B.5090300@suse.de> Date: Tue, 09 Dec 2008 14:14:19 +0100 From: Alexander Graf MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070604090300000308000300" Subject: [Qemu-devel] [PATCH] Fix jmp im on x86_64 when executing 32-bit code Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@suse.de This is a multi-part message in MIME format. --------------070604090300000308000300 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit When running grub-install (32-bit) on an x86_64 Linux system in qemu, it hangs on a pagefault forever, because an integer overflow occurs on the IP on "jmp im". This patch masks overflows for 32 bit IPs on a 64 bit system, just like it is done for 16 bit IPs already. Using this patch, x86_64 openSUSE installation works again. Signed-off-by: Alexander Graf Signed-off-by: Kevin Wolf --------------070604090300000308000300 Content-Type: text/x-patch; name="jmp-im.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="jmp-im.patch" Index: target-i386/translate.c =================================================================== --- target-i386/translate.c (revision 5959) +++ target-i386/translate.c (working copy) @@ -6165,6 +6165,8 @@ tval += s->pc - s->cs_base; if (s->dflag == 0) tval &= 0xffff; + else if(!CODE64(s)) + tval &= 0xffffffff; gen_jmp(s, tval); break; case 0xea: /* ljmp im */ --------------070604090300000308000300--