From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KQT1s-0000Vg-QB for qemu-devel@nongnu.org; Tue, 05 Aug 2008 16:21:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KQT1r-0000TD-4e for qemu-devel@nongnu.org; Tue, 05 Aug 2008 16:21:12 -0400 Received: from [199.232.76.173] (port=51399 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KQT1r-0000Sv-0h for qemu-devel@nongnu.org; Tue, 05 Aug 2008 16:21:11 -0400 Received: from csl.cornell.edu ([128.84.224.10]:3795 helo=vlsi.csl.cornell.edu) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KQT1q-0008NT-JK for qemu-devel@nongnu.org; Tue, 05 Aug 2008 16:21:10 -0400 Date: Tue, 5 Aug 2008 16:20:58 -0400 (EDT) From: Vince Weaver In-Reply-To: Message-ID: <20080805161615.S57426@stanley.csl.cornell.edu> References: <20080728225136.C26546@stanley.csl.cornell.edu> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Subject: [Qemu-devel] another SPARC issue 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: Blue Swirl Hello so I'm still trying to get bzip to work under sparc32plus-linux-user This time the problem is with the "ldda" instruction, which is loading off of the block-read %asi (I am learning way more than I want to about obscure parts of the SPARC architecture). The code involved is doing an optimized memory copy, so it's using the floating point unit to accelerate this. The instruction is ldda [ %o1 + 0x40 ] %asi, %f16 but under Qemu for some reason 0x80 is added to %o1 (instead of 0x40). Indeed if you look at the generated TCG (see below), the 0x40 is being added in twice. I was digging around in translate.c but can't seem to see why this is happning. Any help would be appreciated... Thanks Vince IN: __memcpy_large 0x000000000002b73c: ldda [ %o1 + 0x40 ] %asi, %f16 OP after la: ld_i32 tmp11,regwptr,$0x8 ld_i32 tmp12,regwptr,$0xc movi_i32 tmp15,$0x40 movi_i32 tmp16,$0x0 add2_i32 loc9,loc10,tmp11,tmp12,tmp15,tmp16 movi_i32 pc_0,$0x2b73c movi_i32 pc_1,$0x0 movi_i32 npc_0,$0x2b740 movi_i32 npc_1,$0x0 movi_i32 tmp15,$0x40 movi_i32 tmp16,$0x0 add2_i32 loc9,loc10,loc9,loc10,tmp15,tmp16 ld_i32 tmp17,env,$0xd9c8 movi_i32 tmp18,$0x8 movi_i32 tmp19,$0x10 movi_i32 tmp20,$helper_ldf_asi call tmp20,$0x0,$0,loc9,loc10,tmp17,tmp18,tmp19 movi_i32 pc_0,$0x2b740 movi_i32 pc_1,$0x0 movi_i32 npc_0,$0x2b744 movi_i32 npc_1,$0x0 movi_i32 tmp17,$helper_debug call tmp17,$0x0,$0 exit_tb $0x0 end