Split the 286/386 interpreter away from the 486+ one (the 286/386 interpreter does not use the pccache's, readlookup's, and writelookup's as the emulated CPU's are too slow for them to be required, and also has more accurate FPU timings), also added a LPT status read function for future-proofing.
This commit is contained in:
@@ -330,6 +330,110 @@ extern const OpFn ops_REPNE[1024];
|
||||
extern const OpFn ops_3DNOW[256];
|
||||
extern const OpFn ops_3DNOWE[256];
|
||||
|
||||
|
||||
void x86_setopcodes_2386(const OpFn *opcodes, const OpFn *opcodes_0f);
|
||||
|
||||
extern const OpFn *x86_2386_opcodes;
|
||||
extern const OpFn *x86_2386_opcodes_0f;
|
||||
extern const OpFn *x86_2386_opcodes_d8_a16;
|
||||
extern const OpFn *x86_2386_opcodes_d8_a32;
|
||||
extern const OpFn *x86_2386_opcodes_d9_a16;
|
||||
extern const OpFn *x86_2386_opcodes_d9_a32;
|
||||
extern const OpFn *x86_2386_opcodes_da_a16;
|
||||
extern const OpFn *x86_2386_opcodes_da_a32;
|
||||
extern const OpFn *x86_2386_opcodes_db_a16;
|
||||
extern const OpFn *x86_2386_opcodes_db_a32;
|
||||
extern const OpFn *x86_2386_opcodes_dc_a16;
|
||||
extern const OpFn *x86_2386_opcodes_dc_a32;
|
||||
extern const OpFn *x86_2386_opcodes_dd_a16;
|
||||
extern const OpFn *x86_2386_opcodes_dd_a32;
|
||||
extern const OpFn *x86_2386_opcodes_de_a16;
|
||||
extern const OpFn *x86_2386_opcodes_de_a32;
|
||||
extern const OpFn *x86_2386_opcodes_df_a16;
|
||||
extern const OpFn *x86_2386_opcodes_df_a32;
|
||||
extern const OpFn *x86_2386_opcodes_REPE;
|
||||
extern const OpFn *x86_2386_opcodes_REPNE;
|
||||
|
||||
extern const OpFn ops_2386_286[1024];
|
||||
extern const OpFn ops_2386_286_0f[1024];
|
||||
|
||||
extern const OpFn ops_2386_386[1024];
|
||||
extern const OpFn ops_2386_386_0f[1024];
|
||||
|
||||
extern const OpFn ops_2386_486_0f[1024];
|
||||
extern const OpFn ops_2386_ibm486_0f[1024];
|
||||
|
||||
extern const OpFn ops_2386_sf_fpu_287_d9_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_287_d9_a32[256];
|
||||
extern const OpFn ops_2386_sf_fpu_287_da_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_287_da_a32[256];
|
||||
extern const OpFn ops_2386_sf_fpu_287_db_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_287_db_a32[256];
|
||||
extern const OpFn ops_2386_sf_fpu_287_dc_a16[32];
|
||||
extern const OpFn ops_2386_sf_fpu_287_dc_a32[32];
|
||||
extern const OpFn ops_2386_sf_fpu_287_dd_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_287_dd_a32[256];
|
||||
extern const OpFn ops_2386_sf_fpu_287_de_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_287_de_a32[256];
|
||||
extern const OpFn ops_2386_sf_fpu_287_df_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_287_df_a32[256];
|
||||
|
||||
extern const OpFn ops_2386_sf_fpu_d8_a16[32];
|
||||
extern const OpFn ops_2386_sf_fpu_d8_a32[32];
|
||||
extern const OpFn ops_2386_sf_fpu_d9_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_d9_a32[256];
|
||||
extern const OpFn ops_2386_sf_fpu_da_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_da_a32[256];
|
||||
extern const OpFn ops_2386_sf_fpu_db_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_db_a32[256];
|
||||
extern const OpFn ops_2386_sf_fpu_dc_a16[32];
|
||||
extern const OpFn ops_2386_sf_fpu_dc_a32[32];
|
||||
extern const OpFn ops_2386_sf_fpu_dd_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_dd_a32[256];
|
||||
extern const OpFn ops_2386_sf_fpu_de_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_de_a32[256];
|
||||
extern const OpFn ops_2386_sf_fpu_df_a16[256];
|
||||
extern const OpFn ops_2386_sf_fpu_df_a32[256];
|
||||
|
||||
extern const OpFn ops_2386_fpu_287_d9_a16[256];
|
||||
extern const OpFn ops_2386_fpu_287_d9_a32[256];
|
||||
extern const OpFn ops_2386_fpu_287_da_a16[256];
|
||||
extern const OpFn ops_2386_fpu_287_da_a32[256];
|
||||
extern const OpFn ops_2386_fpu_287_db_a16[256];
|
||||
extern const OpFn ops_2386_fpu_287_db_a32[256];
|
||||
extern const OpFn ops_2386_fpu_287_dc_a16[32];
|
||||
extern const OpFn ops_2386_fpu_287_dc_a32[32];
|
||||
extern const OpFn ops_2386_fpu_287_dd_a16[256];
|
||||
extern const OpFn ops_2386_fpu_287_dd_a32[256];
|
||||
extern const OpFn ops_2386_fpu_287_de_a16[256];
|
||||
extern const OpFn ops_2386_fpu_287_de_a32[256];
|
||||
extern const OpFn ops_2386_fpu_287_df_a16[256];
|
||||
extern const OpFn ops_2386_fpu_287_df_a32[256];
|
||||
|
||||
extern const OpFn ops_2386_fpu_d8_a16[32];
|
||||
extern const OpFn ops_2386_fpu_d8_a32[32];
|
||||
extern const OpFn ops_2386_fpu_d9_a16[256];
|
||||
extern const OpFn ops_2386_fpu_d9_a32[256];
|
||||
extern const OpFn ops_2386_fpu_da_a16[256];
|
||||
extern const OpFn ops_2386_fpu_da_a32[256];
|
||||
extern const OpFn ops_2386_fpu_db_a16[256];
|
||||
extern const OpFn ops_2386_fpu_db_a32[256];
|
||||
extern const OpFn ops_2386_fpu_dc_a16[32];
|
||||
extern const OpFn ops_2386_fpu_dc_a32[32];
|
||||
extern const OpFn ops_2386_fpu_dd_a16[256];
|
||||
extern const OpFn ops_2386_fpu_dd_a32[256];
|
||||
extern const OpFn ops_2386_fpu_de_a16[256];
|
||||
extern const OpFn ops_2386_fpu_de_a32[256];
|
||||
extern const OpFn ops_2386_fpu_df_a16[256];
|
||||
extern const OpFn ops_2386_fpu_df_a32[256];
|
||||
extern const OpFn ops_2386_nofpu_a16[256];
|
||||
extern const OpFn ops_2386_nofpu_a32[256];
|
||||
|
||||
extern const OpFn ops_2386_REPE[1024];
|
||||
extern const OpFn ops_2386_REPNE[1024];
|
||||
extern const OpFn ops_2386_3DNOW[256];
|
||||
|
||||
|
||||
#define C0 (1 << 8)
|
||||
#define C1 (1 << 9)
|
||||
#define C2 (1 << 10)
|
||||
|
||||
Reference in New Issue
Block a user