Replaced the codegen_ops_NULL table references with NULL pointers, as it has the same effect without requiring an extra table of opcodes, also made the new recompiler clear codegen_flags_changed after every interpreted instruction to prevent conditional jumps from occasionally taking the wrong turn (fixes CL-GD 54x6 driver glitches in 24bpp mode on Windows 98 SE), and added instruction length heuristics on fetching the instruction, fixes Jane's US Navy Fighters.
This commit is contained in:
@@ -607,51 +607,3 @@ RecompOpFn recomp_opcodes_REPNE[512] = {
|
|||||||
/*f0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
/*f0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
||||||
// clang-format on
|
// clang-format on
|
||||||
};
|
};
|
||||||
|
|
||||||
RecompOpFn recomp_opcodes_NULL[512] = {
|
|
||||||
// clang-format off
|
|
||||||
/*16-bit data*/
|
|
||||||
/* 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f*/
|
|
||||||
/*00*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*10*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*20*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*30*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*40*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*50*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*60*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*70*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*80*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*90*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*a0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*b0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*c0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*d0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*e0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*f0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*32-bit data*/
|
|
||||||
/* 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f*/
|
|
||||||
/*00*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*10*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*20*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*30*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*40*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*50*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*60*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*70*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*80*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*90*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*a0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*b0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*c0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*d0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*e0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*f0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
// clang-format on
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ extern RecompOpFn recomp_opcodes_de[512];
|
|||||||
extern RecompOpFn recomp_opcodes_df[512];
|
extern RecompOpFn recomp_opcodes_df[512];
|
||||||
extern RecompOpFn recomp_opcodes_REPE[512];
|
extern RecompOpFn recomp_opcodes_REPE[512];
|
||||||
extern RecompOpFn recomp_opcodes_REPNE[512];
|
extern RecompOpFn recomp_opcodes_REPNE[512];
|
||||||
extern RecompOpFn recomp_opcodes_NULL[512];
|
|
||||||
|
|
||||||
#define REG_EAX 0
|
#define REG_EAX 0
|
||||||
#define REG_ECX 1
|
#define REG_ECX 1
|
||||||
|
|||||||
@@ -883,7 +883,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
|
|
||||||
case 0xd8:
|
case 0xd8:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d8_a32 : x86_dynarec_opcodes_d8_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d8_a32 : x86_dynarec_opcodes_d8_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_d8;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_d8;
|
||||||
opcode_shift = 3;
|
opcode_shift = 3;
|
||||||
opcode_mask = 0x1f;
|
opcode_mask = 0x1f;
|
||||||
over = 1;
|
over = 1;
|
||||||
@@ -893,7 +893,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xd9:
|
case 0xd9:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d9_a32 : x86_dynarec_opcodes_d9_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d9_a32 : x86_dynarec_opcodes_d9_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_d9;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_d9;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -902,7 +902,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xda:
|
case 0xda:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_da_a32 : x86_dynarec_opcodes_da_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_da_a32 : x86_dynarec_opcodes_da_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_da;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_da;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -911,7 +911,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xdb:
|
case 0xdb:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_db_a32 : x86_dynarec_opcodes_db_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_db_a32 : x86_dynarec_opcodes_db_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_db;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_db;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -920,7 +920,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xdc:
|
case 0xdc:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dc_a32 : x86_dynarec_opcodes_dc_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dc_a32 : x86_dynarec_opcodes_dc_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_dc;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_dc;
|
||||||
opcode_shift = 3;
|
opcode_shift = 3;
|
||||||
opcode_mask = 0x1f;
|
opcode_mask = 0x1f;
|
||||||
over = 1;
|
over = 1;
|
||||||
@@ -930,7 +930,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xdd:
|
case 0xdd:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dd_a32 : x86_dynarec_opcodes_dd_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dd_a32 : x86_dynarec_opcodes_dd_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_dd;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_dd;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -939,7 +939,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xde:
|
case 0xde:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_de_a32 : x86_dynarec_opcodes_de_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_de_a32 : x86_dynarec_opcodes_de_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_de;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_de;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -948,7 +948,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xdf:
|
case 0xdf:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_df_a32 : x86_dynarec_opcodes_df_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_df_a32 : x86_dynarec_opcodes_df_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_df;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_df;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
|
|||||||
@@ -1922,7 +1922,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
|
|
||||||
case 0xd8:
|
case 0xd8:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d8_a32 : x86_dynarec_opcodes_d8_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d8_a32 : x86_dynarec_opcodes_d8_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_d8;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_d8;
|
||||||
opcode_shift = 3;
|
opcode_shift = 3;
|
||||||
opcode_mask = 0x1f;
|
opcode_mask = 0x1f;
|
||||||
over = 1;
|
over = 1;
|
||||||
@@ -1932,7 +1932,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xd9:
|
case 0xd9:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d9_a32 : x86_dynarec_opcodes_d9_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d9_a32 : x86_dynarec_opcodes_d9_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_d9;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_d9;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -1941,7 +1941,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xda:
|
case 0xda:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_da_a32 : x86_dynarec_opcodes_da_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_da_a32 : x86_dynarec_opcodes_da_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_da;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_da;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -1950,7 +1950,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xdb:
|
case 0xdb:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_db_a32 : x86_dynarec_opcodes_db_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_db_a32 : x86_dynarec_opcodes_db_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_db;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_db;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -1959,7 +1959,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xdc:
|
case 0xdc:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dc_a32 : x86_dynarec_opcodes_dc_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dc_a32 : x86_dynarec_opcodes_dc_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_dc;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_dc;
|
||||||
opcode_shift = 3;
|
opcode_shift = 3;
|
||||||
opcode_mask = 0x1f;
|
opcode_mask = 0x1f;
|
||||||
over = 1;
|
over = 1;
|
||||||
@@ -1969,7 +1969,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xdd:
|
case 0xdd:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dd_a32 : x86_dynarec_opcodes_dd_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dd_a32 : x86_dynarec_opcodes_dd_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_dd;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_dd;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -1978,7 +1978,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xde:
|
case 0xde:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_de_a32 : x86_dynarec_opcodes_de_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_de_a32 : x86_dynarec_opcodes_de_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_de;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_de;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -1987,7 +1987,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
break;
|
break;
|
||||||
case 0xdf:
|
case 0xdf:
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_df_a32 : x86_dynarec_opcodes_df_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_df_a32 : x86_dynarec_opcodes_df_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_df;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_df;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
|
|||||||
@@ -440,7 +440,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
last_prefix = 0xd8;
|
last_prefix = 0xd8;
|
||||||
#endif
|
#endif
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d8_a32 : x86_dynarec_opcodes_d8_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d8_a32 : x86_dynarec_opcodes_d8_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_d8;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_d8;
|
||||||
opcode_shift = 3;
|
opcode_shift = 3;
|
||||||
opcode_mask = 0x1f;
|
opcode_mask = 0x1f;
|
||||||
over = 1;
|
over = 1;
|
||||||
@@ -453,7 +453,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
last_prefix = 0xd9;
|
last_prefix = 0xd9;
|
||||||
#endif
|
#endif
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d9_a32 : x86_dynarec_opcodes_d9_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_d9_a32 : x86_dynarec_opcodes_d9_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_d9;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_d9;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -465,7 +465,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
last_prefix = 0xda;
|
last_prefix = 0xda;
|
||||||
#endif
|
#endif
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_da_a32 : x86_dynarec_opcodes_da_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_da_a32 : x86_dynarec_opcodes_da_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_da;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_da;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -477,7 +477,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
last_prefix = 0xdb;
|
last_prefix = 0xdb;
|
||||||
#endif
|
#endif
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_db_a32 : x86_dynarec_opcodes_db_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_db_a32 : x86_dynarec_opcodes_db_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_db;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_db;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -489,7 +489,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
last_prefix = 0xdc;
|
last_prefix = 0xdc;
|
||||||
#endif
|
#endif
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dc_a32 : x86_dynarec_opcodes_dc_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dc_a32 : x86_dynarec_opcodes_dc_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_dc;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_dc;
|
||||||
opcode_shift = 3;
|
opcode_shift = 3;
|
||||||
opcode_mask = 0x1f;
|
opcode_mask = 0x1f;
|
||||||
over = 1;
|
over = 1;
|
||||||
@@ -502,7 +502,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
last_prefix = 0xdd;
|
last_prefix = 0xdd;
|
||||||
#endif
|
#endif
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dd_a32 : x86_dynarec_opcodes_dd_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_dd_a32 : x86_dynarec_opcodes_dd_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_dd;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_dd;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -514,7 +514,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
last_prefix = 0xde;
|
last_prefix = 0xde;
|
||||||
#endif
|
#endif
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_de_a32 : x86_dynarec_opcodes_de_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_de_a32 : x86_dynarec_opcodes_de_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_de;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_de;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -526,7 +526,7 @@ codegen_generate_call(uint8_t opcode, OpFn op, uint32_t fetchdat, uint32_t new_p
|
|||||||
last_prefix = 0xdf;
|
last_prefix = 0xdf;
|
||||||
#endif
|
#endif
|
||||||
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_df_a32 : x86_dynarec_opcodes_df_a16;
|
op_table = (op_32 & 0x200) ? x86_dynarec_opcodes_df_a32 : x86_dynarec_opcodes_df_a16;
|
||||||
recomp_op_table = fpu_softfloat ? recomp_opcodes_NULL : recomp_opcodes_df;
|
recomp_op_table = fpu_softfloat ? NULL : recomp_opcodes_df;
|
||||||
opcode_mask = 0xff;
|
opcode_mask = 0xff;
|
||||||
over = 1;
|
over = 1;
|
||||||
pc_off = -1;
|
pc_off = -1;
|
||||||
@@ -713,6 +713,7 @@ generate_call:
|
|||||||
uop_MOV_IMM(ir, IREG_ssegs, op_ssegs);
|
uop_MOV_IMM(ir, IREG_ssegs, op_ssegs);
|
||||||
uop_LOAD_FUNC_ARG_IMM(ir, 0, fetchdat);
|
uop_LOAD_FUNC_ARG_IMM(ir, 0, fetchdat);
|
||||||
uop_CALL_INSTRUCTION_FUNC(ir, op);
|
uop_CALL_INSTRUCTION_FUNC(ir, op);
|
||||||
|
codegen_flags_changed = 0;
|
||||||
codegen_mark_code_present(block, cs + cpu_state.pc, 8);
|
codegen_mark_code_present(block, cs + cpu_state.pc, 8);
|
||||||
|
|
||||||
last_op_32 = op_32;
|
last_op_32 = op_32;
|
||||||
|
|||||||
@@ -557,51 +557,3 @@ RecompOpFn recomp_opcodes_df[512] = {
|
|||||||
// clang-format on
|
// clang-format on
|
||||||
};
|
};
|
||||||
|
|
||||||
RecompOpFn recomp_opcodes_NULL[512] = {
|
|
||||||
// clang-format off
|
|
||||||
/*16-bit data*/
|
|
||||||
/* 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f*/
|
|
||||||
/*00*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*10*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*20*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*30*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*40*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*50*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*60*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*70*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*80*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*90*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*a0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*b0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*c0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*d0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*e0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*f0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*32-bit data*/
|
|
||||||
/* 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f*/
|
|
||||||
/*00*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*10*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*20*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*30*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*40*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*50*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*60*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*70*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*80*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*90*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*a0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*b0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
|
|
||||||
/*c0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*d0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*e0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
/*f0*/ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
|
|
||||||
// clang-format on
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ extern RecompOpFn recomp_opcodes_de[512];
|
|||||||
extern RecompOpFn recomp_opcodes_df[512];
|
extern RecompOpFn recomp_opcodes_df[512];
|
||||||
/*extern RecompOpFn recomp_opcodes_REPE[512];
|
/*extern RecompOpFn recomp_opcodes_REPE[512];
|
||||||
extern RecompOpFn recomp_opcodes_REPNE[512];*/
|
extern RecompOpFn recomp_opcodes_REPNE[512];*/
|
||||||
extern RecompOpFn recomp_opcodes_NULL[512];
|
|
||||||
|
|
||||||
#define REG_EAX 0
|
#define REG_EAX 0
|
||||||
#define REG_ECX 1
|
#define REG_ECX 1
|
||||||
|
|||||||
@@ -46,6 +46,42 @@ uint32_t backupregs[16];
|
|||||||
|
|
||||||
x86seg _oldds;
|
x86seg _oldds;
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
int opcode_length[256] = { 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 3, /* 0x0x */
|
||||||
|
3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, /* 0x1x */
|
||||||
|
3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, /* 0x2x */
|
||||||
|
3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, /* 0x3x */
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x4x */
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x5x */
|
||||||
|
1, 1, 3, 3, 1, 1, 1, 1, 3, 3, 2, 3, 1, 1, 1, 1, /* 0x6x */
|
||||||
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 0x7x */
|
||||||
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* 0x8x */
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, /* 0x9x */
|
||||||
|
3, 3, 3, 3, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, /* 0xax */
|
||||||
|
2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, /* 0xbx */
|
||||||
|
3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 1, 1, 2, 1, 1, /* 0xcx */
|
||||||
|
3, 3, 3, 3, 2, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, /* 0xdx */
|
||||||
|
2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, 1, 1, 1, 1, /* 0xex */
|
||||||
|
1, 1, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3 }; /* 0xfx */
|
||||||
|
#else
|
||||||
|
int opcode_length[256] = { 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 3, /* 0x0x */
|
||||||
|
3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, /* 0x1x */
|
||||||
|
3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, /* 0x2x */
|
||||||
|
3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 1, /* 0x3x */
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x4x */
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x5x */
|
||||||
|
1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 1, 1, 1, 1, /* 0x6x */
|
||||||
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 0x7x */
|
||||||
|
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* 0x8x */
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, /* 0x9x */
|
||||||
|
3, 3, 3, 3, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, /* 0xax */
|
||||||
|
2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, /* 0xbx */
|
||||||
|
3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 1, 1, 2, 1, 1, /* 0xcx */
|
||||||
|
3, 3, 3, 3, 2, 2, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, /* 0xdx */
|
||||||
|
2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, 1, 1, 1, 1, /* 0xex */
|
||||||
|
3, 1, 3, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 3, 3 }; /* 0xfx */
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_386_LOG
|
#ifdef ENABLE_386_LOG
|
||||||
int x386_do_log = ENABLE_386_LOG;
|
int x386_do_log = ENABLE_386_LOG;
|
||||||
|
|
||||||
@@ -143,7 +179,7 @@ exec386(int cycs)
|
|||||||
cpu_state.ea_seg = &cpu_state.seg_ds;
|
cpu_state.ea_seg = &cpu_state.seg_ds;
|
||||||
cpu_state.ssegs = 0;
|
cpu_state.ssegs = 0;
|
||||||
|
|
||||||
fetchdat = fastreadl(cs + cpu_state.pc);
|
fetchdat = fastreadl_fetch(cs + cpu_state.pc);
|
||||||
|
|
||||||
if (!cpu_state.abrt) {
|
if (!cpu_state.abrt) {
|
||||||
#ifdef ENABLE_386_LOG
|
#ifdef ENABLE_386_LOG
|
||||||
|
|||||||
@@ -257,6 +257,51 @@ get_ram_ptr(uint32_t a)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern int opcode_length[256];
|
||||||
|
|
||||||
|
static __inline uint16_t
|
||||||
|
fastreadw_fetch(uint32_t a)
|
||||||
|
{
|
||||||
|
uint8_t *t;
|
||||||
|
uint16_t val;
|
||||||
|
if ((a & 0xFFF) > 0xFFE) {
|
||||||
|
val = fastreadb(a);
|
||||||
|
if (opcode_length[val & 0xff] > 1)
|
||||||
|
val |= (fastreadb(a + 1) << 8);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
if ((a >> 12) == pccache)
|
||||||
|
return *((uint16_t *) &pccache2[a]);
|
||||||
|
t = getpccache(a);
|
||||||
|
if (cpu_state.abrt)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
pccache = a >> 12;
|
||||||
|
pccache2 = t;
|
||||||
|
return *((uint16_t *) &pccache2[a]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline uint32_t
|
||||||
|
fastreadl_fetch(uint32_t a)
|
||||||
|
{
|
||||||
|
uint8_t *t;
|
||||||
|
uint32_t val;
|
||||||
|
if ((a & 0xFFF) < 0xFFD) {
|
||||||
|
if ((a >> 12) != pccache) {
|
||||||
|
t = getpccache(a);
|
||||||
|
if (cpu_state.abrt)
|
||||||
|
return 0;
|
||||||
|
pccache2 = t;
|
||||||
|
pccache = a >> 12;
|
||||||
|
}
|
||||||
|
return *((uint32_t *) &pccache2[a]);
|
||||||
|
}
|
||||||
|
val = fastreadw_fetch(a);
|
||||||
|
if (opcode_length[val & 0xff] > 2)
|
||||||
|
val |= (fastreadw(a + 2) << 16);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
static __inline uint8_t
|
static __inline uint8_t
|
||||||
getbyte(void)
|
getbyte(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -348,7 +348,7 @@ exec386_dynarec_int(void)
|
|||||||
cpu_state.ea_seg = &cpu_state.seg_ds;
|
cpu_state.ea_seg = &cpu_state.seg_ds;
|
||||||
cpu_state.ssegs = 0;
|
cpu_state.ssegs = 0;
|
||||||
|
|
||||||
fetchdat = fastreadl(cs + cpu_state.pc);
|
fetchdat = fastreadl_fetch(cs + cpu_state.pc);
|
||||||
# ifdef ENABLE_386_DYNAREC_LOG
|
# ifdef ENABLE_386_DYNAREC_LOG
|
||||||
if (in_smm)
|
if (in_smm)
|
||||||
x386_dynarec_log("[%04X:%08X] fetchdat = %08X\n", CS, cpu_state.pc, fetchdat);
|
x386_dynarec_log("[%04X:%08X] fetchdat = %08X\n", CS, cpu_state.pc, fetchdat);
|
||||||
@@ -572,7 +572,7 @@ exec386_dynarec_dyn(void)
|
|||||||
cpu_state.ea_seg = &cpu_state.seg_ds;
|
cpu_state.ea_seg = &cpu_state.seg_ds;
|
||||||
cpu_state.ssegs = 0;
|
cpu_state.ssegs = 0;
|
||||||
|
|
||||||
fetchdat = fastreadl(cs + cpu_state.pc);
|
fetchdat = fastreadl_fetch(cs + cpu_state.pc);
|
||||||
# ifdef ENABLE_386_DYNAREC_LOG
|
# ifdef ENABLE_386_DYNAREC_LOG
|
||||||
if (in_smm)
|
if (in_smm)
|
||||||
x386_dynarec_log("[%04X:%08X] fetchdat = %08X\n", CS, cpu_state.pc, fetchdat);
|
x386_dynarec_log("[%04X:%08X] fetchdat = %08X\n", CS, cpu_state.pc, fetchdat);
|
||||||
@@ -668,7 +668,7 @@ exec386_dynarec_dyn(void)
|
|||||||
cpu_state.ssegs = 0;
|
cpu_state.ssegs = 0;
|
||||||
|
|
||||||
codegen_endpc = (cs + cpu_state.pc) + 8;
|
codegen_endpc = (cs + cpu_state.pc) + 8;
|
||||||
fetchdat = fastreadl(cs + cpu_state.pc);
|
fetchdat = fastreadl_fetch(cs + cpu_state.pc);
|
||||||
|
|
||||||
# ifdef ENABLE_386_DYNAREC_LOG
|
# ifdef ENABLE_386_DYNAREC_LOG
|
||||||
if (in_smm)
|
if (in_smm)
|
||||||
|
|||||||
@@ -536,7 +536,7 @@ flags_rebuild_c(void)
|
|||||||
static __inline int
|
static __inline int
|
||||||
flags_res_valid(void)
|
flags_res_valid(void)
|
||||||
{
|
{
|
||||||
if (cpu_state.flags_op == FLAGS_UNKNOWN || (cpu_state.flags_op >= FLAGS_ROL8 && cpu_state.flags_op <= FLAGS_ROR32))
|
if ((cpu_state.flags_op == FLAGS_UNKNOWN) || ((cpu_state.flags_op >= FLAGS_ROL8) && (cpu_state.flags_op <= FLAGS_ROR32)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user