[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] another SPARC issue

From: Vince Weaver
Subject: [Qemu-devel] another SPARC issue
Date: Tue, 5 Aug 2008 16:20:58 -0400 (EDT)


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...



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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]