|
|
|
@ -3490,7 +3490,7 @@ enum { |
|
|
|
FETCH_FAILURE |
|
|
|
}; |
|
|
|
|
|
|
|
static tdstate decode_thumb_instr(ARMul_State* cpu, u32 inst, u32 addr, u32* arm_inst, u32* inst_size, ARM_INST_PTR* ptr_inst_base) { |
|
|
|
static tdstate decode_thumb_instr(u32 inst, u32 addr, u32* arm_inst, u32* inst_size, ARM_INST_PTR* ptr_inst_base) { |
|
|
|
// Check if in Thumb mode
|
|
|
|
tdstate ret = thumb_translate (addr, inst, arm_inst, inst_size); |
|
|
|
if(ret == t_branch){ |
|
|
|
@ -3581,8 +3581,7 @@ static int InterpreterTranslate(ARMul_State* cpu, int& bb_start, u32 addr) { |
|
|
|
// If we are in thumb instruction, we will translate one thumb to one corresponding arm instruction
|
|
|
|
if (cpu->TFlag) { |
|
|
|
uint32_t arm_inst; |
|
|
|
tdstate state; |
|
|
|
state = decode_thumb_instr(cpu, inst, phys_addr, &arm_inst, &inst_size, &inst_base); |
|
|
|
tdstate state = decode_thumb_instr(inst, phys_addr, &arm_inst, &inst_size, &inst_base); |
|
|
|
|
|
|
|
// We have translated the branch instruction of thumb in thumb decoder
|
|
|
|
if(state == t_branch){ |
|
|
|
|