A number of recompiler fixes and put some of the timer/cycle-related changes behind #ifdef's as they are no longer used but someone may want to still try them out.

This commit is contained in:
OBattler
2020-07-15 18:30:27 +02:00
parent db3364fb4b
commit 0b4b2b4d2f
14 changed files with 89 additions and 41 deletions

View File

@@ -683,6 +683,9 @@ generate_call:
}
codegen_mark_code_present(block, cs+old_pc, (op_pc - old_pc) - pc_off);
/* It is apparently a prefixed instruction. */
// if ((recomp_op_table == recomp_opcodes) && (opcode == 0x48))
// goto codegen_skip;
if (recomp_op_table && recomp_op_table[(opcode | op_32) & recomp_opcode_mask])
{
uint32_t new_pc = recomp_op_table[(opcode | op_32) & recomp_opcode_mask](block, ir, opcode, fetchdat, op_32, op_pc);
@@ -701,7 +704,8 @@ generate_call:
return;
}
}
codegen_skip:
if ((op_table == x86_dynarec_opcodes_REPNE || op_table == x86_dynarec_opcodes_REPE) && !op_table[opcode | op_32])
{
op_table = (OpFn *) x86_dynarec_opcodes;

View File

@@ -20,9 +20,11 @@ void codegen_accumulate(ir_data_t *ir, int acc_reg, int delta)
{
acc_regs[acc_reg].count += delta;
#ifdef USE_ACYCS
if ((acc_reg == ACCREG_cycles) && (delta != 0)) {
uop_ADD_IMM(ir, IREG_acycs, IREG_acycs, -delta);
}
#endif
}
void codegen_accumulate_flush(ir_data_t *ir)

View File

@@ -95,7 +95,9 @@ struct
[IREG_rm_mod_reg] = {REG_DWORD, &cpu_state.rm_data.rm_mod_reg_data, REG_INTEGER, REG_PERMANENT},
#ifdef USE_ACYCS
[IREG_acycs] = {REG_DWORD, &acycs, REG_INTEGER, REG_PERMANENT},
#endif
[IREG_cycles] = {REG_DWORD, &cpu_state._cycles, REG_INTEGER, REG_PERMANENT},
[IREG_CS_base] = {REG_DWORD, &cpu_state.seg_cs.base, REG_INTEGER, REG_PERMANENT},