@@ -452,17 +452,19 @@ static void gen_sub_carry(TCGContext *tcg_ctx, TCGv_i32 dest, TCGv_i32 t0, TCGv_
452
452
tcg_gen_subi_i32 (tcg_ctx , dest , dest , 1 );
453
453
}
454
454
455
- static inline void mb_tcg_opcode_cmp_hook (TCGContext * tcg_ctx , TCGv_i64 v0 , TCGv_i64 v1 , uint32_t size )
455
+ static inline void mb_tcg_opcode_cmp_hook (TCGContext * tcg_ctx , TCGv_i32 v0 , TCGv_i32 v1 , uint32_t size )
456
456
{
457
457
uc_engine * uc = tcg_ctx -> uc ;
458
+ TCGv_i64 targ1 = temp_tcgv_i64 (tcg_ctx , tcgv_i32_temp (tcg_ctx , v0 ));
459
+ TCGv_i64 targ2 = temp_tcgv_i64 (tcg_ctx , tcgv_i32_temp (tcg_ctx , v1 ));
458
460
if (HOOK_EXISTS_BOUNDED (uc , UC_HOOK_TCG_OPCODE , tcg_ctx -> pc_start )) {
459
461
struct hook * hook ;
460
462
HOOK_FOREACH_VAR_DECLARE ;
461
463
HOOK_FOREACH (uc , hook , UC_HOOK_TCG_OPCODE ) {
462
464
if (hook -> to_delete )
463
465
continue ;
464
466
if (hook -> op == UC_TCG_OP_SUB && (hook -> op_flags & UC_TCG_OP_FLAG_CMP )) {
465
- gen_uc_traceopcode (tcg_ctx , hook , v0 , v1 , size , uc , tcg_ctx -> pc_start );
467
+ gen_uc_traceopcode (tcg_ctx , hook , targ1 , targ2 , size , uc , tcg_ctx -> pc_start );
466
468
}
467
469
}
468
470
}
@@ -471,7 +473,7 @@ static inline void mb_tcg_opcode_cmp_hook(TCGContext *tcg_ctx, TCGv_i64 v0, TCGv
471
473
/* dest = T0 + T1. Compute C, N, V and Z flags */
472
474
static void gen_add_CC (TCGContext * tcg_ctx , TCGv_i32 dest , TCGv_i32 t0 , TCGv_i32 t1 )
473
475
{
474
- mb_tcg_opcode_cmp_hook (tcg_ctx , ( TCGv_i64 ) t0 , ( TCGv_i64 ) t1 , 32 );
476
+ mb_tcg_opcode_cmp_hook (tcg_ctx , t0 , t1 , 32 );
475
477
476
478
TCGv_i32 tmp = tcg_temp_new_i32 (tcg_ctx );
477
479
tcg_gen_movi_i32 (tcg_ctx , tmp , 0 );
@@ -515,7 +517,7 @@ static void gen_adc_CC(TCGContext *tcg_ctx, TCGv_i32 dest, TCGv_i32 t0, TCGv_i32
515
517
/* dest = T0 - T1. Compute C, N, V and Z flags */
516
518
static void gen_sub_CC (TCGContext * tcg_ctx , TCGv_i32 dest , TCGv_i32 t0 , TCGv_i32 t1 )
517
519
{
518
- mb_tcg_opcode_cmp_hook (tcg_ctx , ( TCGv_i64 ) t0 , ( TCGv_i64 ) t1 , 32 );
520
+ mb_tcg_opcode_cmp_hook (tcg_ctx , t0 , t1 , 32 );
519
521
520
522
TCGv_i32 tmp ;
521
523
tcg_gen_sub_i32 (tcg_ctx , tcg_ctx -> cpu_NF , t0 , t1 );
0 commit comments