Unsigned extension
This commit is contained in:
@@ -455,8 +455,7 @@ static void gen_sub_carry(TCGContext *tcg_ctx, TCGv_i32 dest, TCGv_i32 t0, TCGv_
|
||||
static inline void mb_tcg_opcode_cmp_hook(TCGContext *tcg_ctx, TCGv_i32 v0, TCGv_i32 v1, uint32_t size)
|
||||
{
|
||||
uc_engine *uc = tcg_ctx->uc;
|
||||
TCGv_i64 targ1 = temp_tcgv_i64(tcg_ctx, tcgv_i32_temp(tcg_ctx, v0));
|
||||
TCGv_i64 targ2 = temp_tcgv_i64(tcg_ctx, tcgv_i32_temp(tcg_ctx, v1));
|
||||
|
||||
if (HOOK_EXISTS_BOUNDED(uc, UC_HOOK_TCG_OPCODE, tcg_ctx->pc_start)) {
|
||||
struct hook *hook;
|
||||
HOOK_FOREACH_VAR_DECLARE;
|
||||
@@ -464,7 +463,13 @@ static inline void mb_tcg_opcode_cmp_hook(TCGContext *tcg_ctx, TCGv_i32 v0, TCGv
|
||||
if (hook->to_delete)
|
||||
continue;
|
||||
if (hook->op == UC_TCG_OP_SUB && (hook->op_flags & UC_TCG_OP_FLAG_CMP)) {
|
||||
TCGv_i64 targ1 = tcg_temp_new_i64(tcg_ctx);
|
||||
TCGv_i64 targ2 = tcg_temp_new_i64(tcg_ctx);
|
||||
tcg_gen_extu_i32_i64(tcg_ctx, targ1, v0);
|
||||
tcg_gen_extu_i32_i64(tcg_ctx, targ2, v1);
|
||||
gen_uc_traceopcode(tcg_ctx, hook, targ1, targ2, size, uc, tcg_ctx->pc_start);
|
||||
tcg_temp_free_i64(tcg_ctx, targ1);
|
||||
tcg_temp_free_i64(tcg_ctx, targ2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user