Browse Source
Revert "Split huge interpreter source file into translation info and interpreter (+ some tiny misc style fixes)"
nce_cpp
Revert "Split huge interpreter source file into translation info and interpreter (+ some tiny misc style fixes)"
nce_cpp
committed by
GitHub
5 changed files with 2727 additions and 2731 deletions
-
2src/core/CMakeLists.txt
-
2719src/core/arm/dyncom/arm_dyncom_interpreter.cpp
-
2181src/core/arm/dyncom/arm_dyncom_trans.cpp
-
492src/core/arm/dyncom/arm_dyncom_trans.h
-
64src/core/arm/skyeye_common/vfp/vfpinstr.cpp
2719
src/core/arm/dyncom/arm_dyncom_interpreter.cpp
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2181
src/core/arm/dyncom/arm_dyncom_trans.cpp
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -1,492 +0,0 @@ |
|||
struct ARMul_State; |
|||
typedef unsigned int (*shtop_fp_t)(ARMul_State* cpu, unsigned int sht_oper); |
|||
|
|||
enum class TransExtData { |
|||
COND = (1 << 0), |
|||
NON_BRANCH = (1 << 1), |
|||
DIRECT_BRANCH = (1 << 2), |
|||
INDIRECT_BRANCH = (1 << 3), |
|||
CALL = (1 << 4), |
|||
RET = (1 << 5), |
|||
END_OF_PAGE = (1 << 6), |
|||
THUMB = (1 << 7), |
|||
SINGLE_STEP = (1 << 8) |
|||
}; |
|||
|
|||
struct arm_inst { |
|||
unsigned int idx; |
|||
unsigned int cond; |
|||
TransExtData br; |
|||
char component[0]; |
|||
}; |
|||
|
|||
struct generic_arm_inst { |
|||
u32 Ra; |
|||
u32 Rm; |
|||
u32 Rn; |
|||
u32 Rd; |
|||
u8 op1; |
|||
u8 op2; |
|||
}; |
|||
|
|||
struct adc_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct add_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct orr_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct and_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct eor_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct bbl_inst { |
|||
unsigned int L; |
|||
int signed_immed_24; |
|||
unsigned int next_addr; |
|||
unsigned int jmp_addr; |
|||
}; |
|||
|
|||
struct bx_inst { |
|||
unsigned int Rm; |
|||
}; |
|||
|
|||
struct blx_inst { |
|||
union { |
|||
s32 signed_immed_24; |
|||
u32 Rm; |
|||
} val; |
|||
unsigned int inst; |
|||
}; |
|||
|
|||
struct clz_inst { |
|||
unsigned int Rm; |
|||
unsigned int Rd; |
|||
}; |
|||
|
|||
struct cps_inst { |
|||
unsigned int imod0; |
|||
unsigned int imod1; |
|||
unsigned int mmod; |
|||
unsigned int A, I, F; |
|||
unsigned int mode; |
|||
}; |
|||
|
|||
struct clrex_inst { |
|||
}; |
|||
|
|||
struct cpy_inst { |
|||
unsigned int Rm; |
|||
unsigned int Rd; |
|||
}; |
|||
|
|||
struct bic_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct sub_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct tst_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct cmn_inst { |
|||
unsigned int I; |
|||
unsigned int Rn; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct teq_inst { |
|||
unsigned int I; |
|||
unsigned int Rn; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct stm_inst { |
|||
unsigned int inst; |
|||
}; |
|||
|
|||
struct bkpt_inst { |
|||
u32 imm; |
|||
}; |
|||
|
|||
struct stc_inst { |
|||
}; |
|||
|
|||
struct ldc_inst { |
|||
}; |
|||
|
|||
struct swi_inst { |
|||
unsigned int num; |
|||
}; |
|||
|
|||
struct cmp_inst { |
|||
unsigned int I; |
|||
unsigned int Rn; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct mov_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct mvn_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct rev_inst { |
|||
unsigned int Rd; |
|||
unsigned int Rm; |
|||
unsigned int op1; |
|||
unsigned int op2; |
|||
}; |
|||
|
|||
struct rsb_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct rsc_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct sbc_inst { |
|||
unsigned int I; |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int shifter_operand; |
|||
shtop_fp_t shtop_func; |
|||
}; |
|||
|
|||
struct mul_inst { |
|||
unsigned int S; |
|||
unsigned int Rd; |
|||
unsigned int Rs; |
|||
unsigned int Rm; |
|||
}; |
|||
|
|||
struct smul_inst { |
|||
unsigned int Rd; |
|||
unsigned int Rs; |
|||
unsigned int Rm; |
|||
unsigned int x; |
|||
unsigned int y; |
|||
}; |
|||
|
|||
struct umull_inst { |
|||
unsigned int S; |
|||
unsigned int RdHi; |
|||
unsigned int RdLo; |
|||
unsigned int Rs; |
|||
unsigned int Rm; |
|||
}; |
|||
|
|||
struct smlad_inst { |
|||
unsigned int m; |
|||
unsigned int Rm; |
|||
unsigned int Rd; |
|||
unsigned int Ra; |
|||
unsigned int Rn; |
|||
unsigned int op1; |
|||
unsigned int op2; |
|||
}; |
|||
|
|||
struct smla_inst { |
|||
unsigned int x; |
|||
unsigned int y; |
|||
unsigned int Rm; |
|||
unsigned int Rd; |
|||
unsigned int Rs; |
|||
unsigned int Rn; |
|||
}; |
|||
|
|||
struct smlalxy_inst { |
|||
unsigned int x; |
|||
unsigned int y; |
|||
unsigned int RdLo; |
|||
unsigned int RdHi; |
|||
unsigned int Rm; |
|||
unsigned int Rn; |
|||
}; |
|||
|
|||
struct ssat_inst { |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int imm5; |
|||
unsigned int sat_imm; |
|||
unsigned int shift_type; |
|||
}; |
|||
|
|||
struct umaal_inst { |
|||
unsigned int Rn; |
|||
unsigned int Rm; |
|||
unsigned int RdHi; |
|||
unsigned int RdLo; |
|||
}; |
|||
|
|||
struct umlal_inst { |
|||
unsigned int S; |
|||
unsigned int Rm; |
|||
unsigned int Rs; |
|||
unsigned int RdHi; |
|||
unsigned int RdLo; |
|||
}; |
|||
|
|||
struct smlal_inst { |
|||
unsigned int S; |
|||
unsigned int Rm; |
|||
unsigned int Rs; |
|||
unsigned int RdHi; |
|||
unsigned int RdLo; |
|||
}; |
|||
|
|||
struct smlald_inst { |
|||
unsigned int RdLo; |
|||
unsigned int RdHi; |
|||
unsigned int Rm; |
|||
unsigned int Rn; |
|||
unsigned int swap; |
|||
unsigned int op1; |
|||
unsigned int op2; |
|||
}; |
|||
|
|||
struct mla_inst { |
|||
unsigned int S; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int Rs; |
|||
unsigned int Rm; |
|||
}; |
|||
|
|||
struct mrc_inst { |
|||
unsigned int opcode_1; |
|||
unsigned int opcode_2; |
|||
unsigned int cp_num; |
|||
unsigned int crn; |
|||
unsigned int crm; |
|||
unsigned int Rd; |
|||
unsigned int inst; |
|||
}; |
|||
|
|||
struct mcr_inst { |
|||
unsigned int opcode_1; |
|||
unsigned int opcode_2; |
|||
unsigned int cp_num; |
|||
unsigned int crn; |
|||
unsigned int crm; |
|||
unsigned int Rd; |
|||
unsigned int inst; |
|||
}; |
|||
|
|||
struct mcrr_inst { |
|||
unsigned int opcode_1; |
|||
unsigned int cp_num; |
|||
unsigned int crm; |
|||
unsigned int rt; |
|||
unsigned int rt2; |
|||
}; |
|||
|
|||
struct mrs_inst { |
|||
unsigned int R; |
|||
unsigned int Rd; |
|||
}; |
|||
|
|||
struct msr_inst { |
|||
unsigned int field_mask; |
|||
unsigned int R; |
|||
unsigned int inst; |
|||
}; |
|||
|
|||
struct pld_inst { |
|||
}; |
|||
|
|||
struct sxtb_inst { |
|||
unsigned int Rd; |
|||
unsigned int Rm; |
|||
unsigned int rotate; |
|||
}; |
|||
|
|||
struct sxtab_inst { |
|||
unsigned int Rd; |
|||
unsigned int Rn; |
|||
unsigned int Rm; |
|||
unsigned rotate; |
|||
}; |
|||
|
|||
struct sxtah_inst { |
|||
unsigned int Rd; |
|||
unsigned int Rn; |
|||
unsigned int Rm; |
|||
unsigned int rotate; |
|||
}; |
|||
|
|||
struct sxth_inst { |
|||
unsigned int Rd; |
|||
unsigned int Rm; |
|||
unsigned int rotate; |
|||
}; |
|||
|
|||
struct uxtab_inst { |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int rotate; |
|||
unsigned int Rm; |
|||
}; |
|||
|
|||
struct uxtah_inst { |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int rotate; |
|||
unsigned int Rm; |
|||
}; |
|||
|
|||
struct uxth_inst { |
|||
unsigned int Rd; |
|||
unsigned int Rm; |
|||
unsigned int rotate; |
|||
}; |
|||
|
|||
struct cdp_inst { |
|||
unsigned int opcode_1; |
|||
unsigned int CRn; |
|||
unsigned int CRd; |
|||
unsigned int cp_num; |
|||
unsigned int opcode_2; |
|||
unsigned int CRm; |
|||
unsigned int inst; |
|||
}; |
|||
|
|||
struct uxtb_inst { |
|||
unsigned int Rd; |
|||
unsigned int Rm; |
|||
unsigned int rotate; |
|||
}; |
|||
|
|||
struct swp_inst { |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned int Rm; |
|||
}; |
|||
|
|||
struct setend_inst { |
|||
unsigned int set_bigend; |
|||
}; |
|||
|
|||
struct b_2_thumb { |
|||
unsigned int imm; |
|||
}; |
|||
struct b_cond_thumb { |
|||
unsigned int imm; |
|||
unsigned int cond; |
|||
}; |
|||
|
|||
struct bl_1_thumb { |
|||
unsigned int imm; |
|||
}; |
|||
struct bl_2_thumb { |
|||
unsigned int imm; |
|||
}; |
|||
struct blx_1_thumb { |
|||
unsigned int imm; |
|||
unsigned int instr; |
|||
}; |
|||
|
|||
struct pkh_inst { |
|||
unsigned int Rm; |
|||
unsigned int Rn; |
|||
unsigned int Rd; |
|||
unsigned char imm; |
|||
}; |
|||
|
|||
#define VFP_INTERPRETER_STRUCT |
|||
#include "core/arm/skyeye_common/vfp/vfpinstr.cpp" |
|||
#undef VFP_INTERPRETER_STRUCT |
|||
|
|||
typedef void (*get_addr_fp_t)(ARMul_State *cpu, unsigned int inst, unsigned int &virt_addr); |
|||
|
|||
struct ldst_inst { |
|||
unsigned int inst; |
|||
get_addr_fp_t get_addr; |
|||
}; |
|||
|
|||
typedef arm_inst* ARM_INST_PTR; |
|||
typedef ARM_INST_PTR (*transop_fp_t)(unsigned int, int); |
|||
|
|||
extern const transop_fp_t arm_instruction_trans[]; |
|||
extern const size_t arm_instruction_trans_len; |
|||
|
|||
#define TRANS_CACHE_SIZE (64 * 1024 * 2000) |
|||
extern char trans_cache_buf[TRANS_CACHE_SIZE]; |
|||
extern size_t trans_cache_buf_top; |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue