From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KUksK-0002xf-Pk for qemu-devel@nongnu.org; Sun, 17 Aug 2008 12:13:04 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KUksK-0002x2-AS for qemu-devel@nongnu.org; Sun, 17 Aug 2008 12:13:04 -0400 Received: from [199.232.76.173] (port=60561 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KUksK-0002wl-2C for qemu-devel@nongnu.org; Sun, 17 Aug 2008 12:13:04 -0400 Received: from savannah.gnu.org ([199.232.41.3]:49455 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KUksJ-0002CZ-UX for qemu-devel@nongnu.org; Sun, 17 Aug 2008 12:13:04 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1KUksJ-0007cF-DU for qemu-devel@nongnu.org; Sun, 17 Aug 2008 16:13:03 +0000 Received: from blueswir1 by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1KUksJ-0007cB-5t for qemu-devel@nongnu.org; Sun, 17 Aug 2008 16:13:03 +0000 MIME-Version: 1.0 Errors-To: blueswir1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Blue Swirl Message-Id: Date: Sun, 17 Aug 2008 16:13:03 +0000 Subject: [Qemu-devel] [5019] Fix 32 bit address overflow 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 Revision: 5019 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5019 Author: blueswir1 Date: 2008-08-17 16:13:02 +0000 (Sun, 17 Aug 2008) Log Message: ----------- Fix 32 bit address overflow Modified Paths: -------------- trunk/tcg/sparc/tcg-target.c Modified: trunk/tcg/sparc/tcg-target.c =================================================================== --- trunk/tcg/sparc/tcg-target.c 2008-08-17 14:34:27 UTC (rev 5018) +++ trunk/tcg/sparc/tcg-target.c 2008-08-17 16:13:02 UTC (rev 5019) @@ -625,8 +625,18 @@ /* ld [arg1 + x], arg1 */ tcg_out_ldst(s, arg1, arg1, offsetof(CPUTLBEntry, addend) - offsetof(CPUTLBEntry, addr_read), HOST_LD_OP); + +#if TARGET_LONG_BITS == 32 + /* and addr_reg, x, arg0 */ + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_I5, 0xffffffff); + tcg_out_arith(s, arg0, addr_reg, TCG_REG_I5, ARITH_AND); + /* add arg0, arg1, arg0 */ + tcg_out_arith(s, arg0, arg0, arg1, ARITH_ADD); +#else /* add addr_reg, arg1, arg0 */ tcg_out_arith(s, arg0, addr_reg, arg1, ARITH_ADD); +#endif + #else arg0 = addr_reg; #endif @@ -785,8 +795,17 @@ tcg_out_ldst(s, arg1, arg1, offsetof(CPUTLBEntry, addend) - offsetof(CPUTLBEntry, addr_write), HOST_LD_OP); +#if TARGET_LONG_BITS == 32 + /* and addr_reg, x, arg0 */ + tcg_out_movi(s, TCG_TYPE_I32, TCG_REG_I5, 0xffffffff); + tcg_out_arith(s, arg0, addr_reg, TCG_REG_I5, ARITH_AND); + /* add arg0, arg1, arg0 */ + tcg_out_arith(s, arg0, arg0, arg1, ARITH_ADD); +#else /* add addr_reg, arg1, arg0 */ tcg_out_arith(s, arg0, addr_reg, arg1, ARITH_ADD); +#endif + #else arg0 = addr_reg; #endif