Closed sunho closed 3 years ago
It generated following tcg.
ld_i32 env,env,$0xffffffffffffffec
movi_i32 tmp6,$0x0
brcond_i32 tmp5,tmp6,ne,$0x0
movi_i32 tmp5,$0x2
movi_i32 tmp6,$0x2
movi_i64 tmp7,$0x16d4c554070
movi_i64 tmp8,$0xa526a
call uc_tracecode,$0x0,$0,tmp5,tmp6,tmp7,tmp8
ld_i32 tmp9,env,$0xffffffffffffffec
movi_i32 tmp10,$0x0
brcond_i32 tmp9,tmp10,ne,$0x0
mov_i32 tmp9,r3
mov_i32 r14,tmp9
movi_i32 tmp9,$0x2
movi_i32 tmp10,$0x2
movi_i64 tmp11,$0x16d4c554070
movi_i64 tmp12,$0xa526c
call uc_tracecode,$0x0,$0,tmp9,tmp10,tmp11,tmp12
ld_i32 tmp13,env,$0xffffffffffffffec
movi_i32 tmp14,$0x0
brcond_i32 tmp13,tmp14,ne,$0x0
mov_i32 tmp13,r1
mov_i32 r0,tmp13
movi_i32 tmp13,$0x4
movi_i32 tmp14,$0x2
movi_i64 tmp15,$0x16d4c554070
movi_i64 tmp16,$0xa526e
call uc_tracecode,$0x0,$0,tmp13,tmp14,tmp15,tmp16
ld_i32 tmp17,env,$0xffffffffffffffec
movi_i32 tmp18,$0x0
brcond_i32 tmp17,tmp18,ne,$0x0
movi_i32 tmp17,$0x0
movi_i32 tmp18,$0x0
or_i32 tmp18,tmp18,tmp17
mov_i32 r12,tmp18
movi_i32 tmp17,$0x4
movi_i32 tmp18,$0x2
movi_i64 tmp19,$0x16d4c554070
movi_i64 tmp20,$0xa5272
call uc_tracecode,$0x0,$0,tmp17,tmp18,tmp19,tmp20
ld_i32 tmp21,env,$0xffffffffffffffec
movi_i32 tmp22,$0x0
brcond_i32 tmp21,tmp22,ne,$0x0
ld_i32 env,env,$0xffffffffffffffec seems wrong.
Let me see. How do you dump out the TCG code?
I just breakpointed at tcg_gen_code_common and called dump_ops functions.
Probably fixed in uc2.
Hello! I'm from https://github.com/Vita3K/Vita3K.
We experienced weird hang while running arm thumb2 code. The relevant code was like this.
I discovered that if I run this code in simpler setting with code hook enabled, it also hangs. Following code is what I used. I also discovered that if I remove "pld [r0, #0x90]", it can complete even with code hook. (
ARM_CODE = CODE_WITHOUT_PLD
)If I remove that pld instruction in real settings (Vita3k running game), the full program doesn't hang and keeps going. I think there's something going wrong in unicorn emulating neon instructions.