Merge pull request #1114 from archshift/conditioncode_al
DynCom: Converted all magic 0xE condition code checks to ConditionCode::AL
This commit is contained in:
commit
a813f78551
|
@ -3908,7 +3908,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
ADC_INST:
|
ADC_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
adc_inst* const inst_cream = (adc_inst*)inst_base->component;
|
adc_inst* const inst_cream = (adc_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 rn_val = RN;
|
u32 rn_val = RN;
|
||||||
|
@ -3943,7 +3943,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
ADD_INST:
|
ADD_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
add_inst* const inst_cream = (add_inst*)inst_base->component;
|
add_inst* const inst_cream = (add_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 rn_val = RN;
|
u32 rn_val = RN;
|
||||||
|
@ -3978,7 +3978,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
AND_INST:
|
AND_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
and_inst* const inst_cream = (and_inst*)inst_base->component;
|
and_inst* const inst_cream = (and_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 lop = RN;
|
u32 lop = RN;
|
||||||
|
@ -4012,7 +4012,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
BBL_INST:
|
BBL_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
bbl_inst *inst_cream = (bbl_inst *)inst_base->component;
|
bbl_inst *inst_cream = (bbl_inst *)inst_base->component;
|
||||||
if (inst_cream->L) {
|
if (inst_cream->L) {
|
||||||
LINK_RTN_ADDR;
|
LINK_RTN_ADDR;
|
||||||
|
@ -4028,7 +4028,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
BIC_INST:
|
BIC_INST:
|
||||||
{
|
{
|
||||||
bic_inst *inst_cream = (bic_inst *)inst_base->component;
|
bic_inst *inst_cream = (bic_inst *)inst_base->component;
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
u32 lop = RN;
|
u32 lop = RN;
|
||||||
if (inst_cream->Rn == 15) {
|
if (inst_cream->Rn == 15) {
|
||||||
lop += 2 * cpu->GetInstructionSize();
|
lop += 2 * cpu->GetInstructionSize();
|
||||||
|
@ -4058,7 +4058,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
BKPT_INST:
|
BKPT_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
bkpt_inst* const inst_cream = (bkpt_inst*)inst_base->component;
|
bkpt_inst* const inst_cream = (bkpt_inst*)inst_base->component;
|
||||||
LOG_DEBUG(Core_ARM11, "Breakpoint instruction hit. Immediate: 0x%08X", inst_cream->imm);
|
LOG_DEBUG(Core_ARM11, "Breakpoint instruction hit. Immediate: 0x%08X", inst_cream->imm);
|
||||||
}
|
}
|
||||||
|
@ -4070,7 +4070,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
BLX_INST:
|
BLX_INST:
|
||||||
{
|
{
|
||||||
blx_inst *inst_cream = (blx_inst *)inst_base->component;
|
blx_inst *inst_cream = (blx_inst *)inst_base->component;
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
unsigned int inst = inst_cream->inst;
|
unsigned int inst = inst_cream->inst;
|
||||||
if (BITS(inst, 20, 27) == 0x12 && BITS(inst, 4, 7) == 0x3) {
|
if (BITS(inst, 20, 27) == 0x12 && BITS(inst, 4, 7) == 0x3) {
|
||||||
cpu->Reg[14] = (cpu->Reg[15] + cpu->GetInstructionSize());
|
cpu->Reg[14] = (cpu->Reg[15] + cpu->GetInstructionSize());
|
||||||
|
@ -4105,7 +4105,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
//
|
//
|
||||||
// This is sufficient for citra, as the CPU for the 3DS does not implement Jazelle.
|
// This is sufficient for citra, as the CPU for the 3DS does not implement Jazelle.
|
||||||
|
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
bx_inst* const inst_cream = (bx_inst*)inst_base->component;
|
bx_inst* const inst_cream = (bx_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 address = RM;
|
u32 address = RM;
|
||||||
|
@ -4126,7 +4126,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
CDP_INST:
|
CDP_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
// Undefined instruction here
|
// Undefined instruction here
|
||||||
cpu->NumInstrsToExecute = 0;
|
cpu->NumInstrsToExecute = 0;
|
||||||
return num_instrs;
|
return num_instrs;
|
||||||
|
@ -4147,7 +4147,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
CLZ_INST:
|
CLZ_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
clz_inst* inst_cream = (clz_inst*)inst_base->component;
|
clz_inst* inst_cream = (clz_inst*)inst_base->component;
|
||||||
RD = clz(RM);
|
RD = clz(RM);
|
||||||
}
|
}
|
||||||
|
@ -4158,7 +4158,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
CMN_INST:
|
CMN_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
cmn_inst* const inst_cream = (cmn_inst*)inst_base->component;
|
cmn_inst* const inst_cream = (cmn_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 rn_val = RN;
|
u32 rn_val = RN;
|
||||||
|
@ -4181,7 +4181,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
CMP_INST:
|
CMP_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
cmp_inst* const inst_cream = (cmp_inst*)inst_base->component;
|
cmp_inst* const inst_cream = (cmp_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 rn_val = RN;
|
u32 rn_val = RN;
|
||||||
|
@ -4236,7 +4236,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
CPY_INST:
|
CPY_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
mov_inst* inst_cream = (mov_inst*)inst_base->component;
|
mov_inst* inst_cream = (mov_inst*)inst_base->component;
|
||||||
|
|
||||||
RD = SHIFTER_OPERAND;
|
RD = SHIFTER_OPERAND;
|
||||||
|
@ -4252,7 +4252,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
EOR_INST:
|
EOR_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
eor_inst* inst_cream = (eor_inst*)inst_base->component;
|
eor_inst* inst_cream = (eor_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 lop = RN;
|
u32 lop = RN;
|
||||||
|
@ -4293,7 +4293,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
LDM_INST:
|
LDM_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
|
|
||||||
|
@ -4365,7 +4365,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
SXTH_INST:
|
SXTH_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
sxth_inst* inst_cream = (sxth_inst*)inst_base->component;
|
sxth_inst* inst_cream = (sxth_inst*)inst_base->component;
|
||||||
|
|
||||||
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate);
|
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate);
|
||||||
|
@ -4426,7 +4426,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
UXTH_INST:
|
UXTH_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
uxth_inst* inst_cream = (uxth_inst*)inst_base->component;
|
uxth_inst* inst_cream = (uxth_inst*)inst_base->component;
|
||||||
RD = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xffff;
|
RD = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xffff;
|
||||||
}
|
}
|
||||||
|
@ -4437,7 +4437,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
UXTAH_INST:
|
UXTAH_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
uxtah_inst* inst_cream = (uxtah_inst*)inst_base->component;
|
uxtah_inst* inst_cream = (uxtah_inst*)inst_base->component;
|
||||||
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xffff;
|
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xffff;
|
||||||
|
|
||||||
|
@ -4450,7 +4450,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
LDRB_INST:
|
LDRB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
|
|
||||||
|
@ -4468,7 +4468,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
LDRBT_INST:
|
LDRBT_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
|
|
||||||
|
@ -4486,7 +4486,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
LDRD_INST:
|
LDRD_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
// Should check if RD is even-numbered, Rd != 14, addr[0:1] == 0, (CP15_reg1_U == 1 || addr[2] == 0)
|
// Should check if RD is even-numbered, Rd != 14, addr[0:1] == 0, (CP15_reg1_U == 1 || addr[2] == 0)
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
|
@ -4506,7 +4506,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
LDREX_INST:
|
LDREX_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
unsigned int read_addr = RN;
|
unsigned int read_addr = RN;
|
||||||
|
|
||||||
|
@ -4525,7 +4525,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
LDREXB_INST:
|
LDREXB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
unsigned int read_addr = RN;
|
unsigned int read_addr = RN;
|
||||||
|
|
||||||
|
@ -4544,7 +4544,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
LDREXH_INST:
|
LDREXH_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
unsigned int read_addr = RN;
|
unsigned int read_addr = RN;
|
||||||
|
|
||||||
|
@ -4563,7 +4563,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
LDREXD_INST:
|
LDREXD_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
unsigned int read_addr = RN;
|
unsigned int read_addr = RN;
|
||||||
|
|
||||||
|
@ -4584,7 +4584,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
LDRH_INST:
|
LDRH_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
|
|
||||||
|
@ -4601,7 +4601,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
LDRSB_INST:
|
LDRSB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
unsigned int value = Memory::Read8(addr);
|
unsigned int value = Memory::Read8(addr);
|
||||||
|
@ -4621,7 +4621,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
LDRSH_INST:
|
LDRSH_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
|
|
||||||
|
@ -4642,7 +4642,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
LDRT_INST:
|
LDRT_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
|
|
||||||
|
@ -4661,7 +4661,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
MCR_INST:
|
MCR_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
mcr_inst* inst_cream = (mcr_inst*)inst_base->component;
|
mcr_inst* inst_cream = (mcr_inst*)inst_base->component;
|
||||||
|
|
||||||
unsigned int inst = inst_cream->inst;
|
unsigned int inst = inst_cream->inst;
|
||||||
|
@ -4682,7 +4682,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
{
|
{
|
||||||
// Stubbed, as the MPCore doesn't have any registers that are accessible
|
// Stubbed, as the MPCore doesn't have any registers that are accessible
|
||||||
// through this instruction.
|
// through this instruction.
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
mcrr_inst* const inst_cream = (mcrr_inst*)inst_base->component;
|
mcrr_inst* const inst_cream = (mcrr_inst*)inst_base->component;
|
||||||
|
|
||||||
LOG_ERROR(Core_ARM11, "MCRR executed | Coprocessor: %u, CRm %u, opc1: %u, Rt: %u, Rt2: %u",
|
LOG_ERROR(Core_ARM11, "MCRR executed | Coprocessor: %u, CRm %u, opc1: %u, Rt: %u, Rt2: %u",
|
||||||
|
@ -4697,7 +4697,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
MLA_INST:
|
MLA_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
mla_inst* inst_cream = (mla_inst*)inst_base->component;
|
mla_inst* inst_cream = (mla_inst*)inst_base->component;
|
||||||
|
|
||||||
u64 rm = RM;
|
u64 rm = RM;
|
||||||
|
@ -4721,7 +4721,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
MOV_INST:
|
MOV_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
mov_inst* inst_cream = (mov_inst*)inst_base->component;
|
mov_inst* inst_cream = (mov_inst*)inst_base->component;
|
||||||
|
|
||||||
RD = SHIFTER_OPERAND;
|
RD = SHIFTER_OPERAND;
|
||||||
|
@ -4748,7 +4748,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
MRC_INST:
|
MRC_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
mrc_inst* inst_cream = (mrc_inst*)inst_base->component;
|
mrc_inst* inst_cream = (mrc_inst*)inst_base->component;
|
||||||
|
|
||||||
unsigned int inst = inst_cream->inst;
|
unsigned int inst = inst_cream->inst;
|
||||||
|
@ -4775,7 +4775,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
{
|
{
|
||||||
// Stubbed, as the MPCore doesn't have any registers that are accessible
|
// Stubbed, as the MPCore doesn't have any registers that are accessible
|
||||||
// through this instruction.
|
// through this instruction.
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
mcrr_inst* const inst_cream = (mcrr_inst*)inst_base->component;
|
mcrr_inst* const inst_cream = (mcrr_inst*)inst_base->component;
|
||||||
|
|
||||||
LOG_ERROR(Core_ARM11, "MRRC executed | Coprocessor: %u, CRm %u, opc1: %u, Rt: %u, Rt2: %u",
|
LOG_ERROR(Core_ARM11, "MRRC executed | Coprocessor: %u, CRm %u, opc1: %u, Rt: %u, Rt2: %u",
|
||||||
|
@ -4790,7 +4790,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
MRS_INST:
|
MRS_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
mrs_inst* inst_cream = (mrs_inst*)inst_base->component;
|
mrs_inst* inst_cream = (mrs_inst*)inst_base->component;
|
||||||
|
|
||||||
if (inst_cream->R) {
|
if (inst_cream->R) {
|
||||||
|
@ -4807,7 +4807,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
MSR_INST:
|
MSR_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
msr_inst* inst_cream = (msr_inst*)inst_base->component;
|
msr_inst* inst_cream = (msr_inst*)inst_base->component;
|
||||||
const u32 UserMask = 0xf80f0200, PrivMask = 0x000001df, StateMask = 0x01000020;
|
const u32 UserMask = 0xf80f0200, PrivMask = 0x000001df, StateMask = 0x01000020;
|
||||||
unsigned int inst = inst_cream->inst;
|
unsigned int inst = inst_cream->inst;
|
||||||
|
@ -4851,7 +4851,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
MUL_INST:
|
MUL_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
mul_inst* inst_cream = (mul_inst*)inst_base->component;
|
mul_inst* inst_cream = (mul_inst*)inst_base->component;
|
||||||
|
|
||||||
u64 rm = RM;
|
u64 rm = RM;
|
||||||
|
@ -4873,7 +4873,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
MVN_INST:
|
MVN_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
mvn_inst* const inst_cream = (mvn_inst*)inst_base->component;
|
mvn_inst* const inst_cream = (mvn_inst*)inst_base->component;
|
||||||
|
|
||||||
RD = ~SHIFTER_OPERAND;
|
RD = ~SHIFTER_OPERAND;
|
||||||
|
@ -4901,7 +4901,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
ORR_INST:
|
ORR_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
orr_inst* const inst_cream = (orr_inst*)inst_base->component;
|
orr_inst* const inst_cream = (orr_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 lop = RN;
|
u32 lop = RN;
|
||||||
|
@ -4944,7 +4944,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
PKHBT_INST:
|
PKHBT_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
pkh_inst *inst_cream = (pkh_inst *)inst_base->component;
|
pkh_inst *inst_cream = (pkh_inst *)inst_base->component;
|
||||||
RD = (RN & 0xFFFF) | ((RM << inst_cream->imm) & 0xFFFF0000);
|
RD = (RN & 0xFFFF) | ((RM << inst_cream->imm) & 0xFFFF0000);
|
||||||
}
|
}
|
||||||
|
@ -4956,7 +4956,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
PKHTB_INST:
|
PKHTB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
pkh_inst *inst_cream = (pkh_inst *)inst_base->component;
|
pkh_inst *inst_cream = (pkh_inst *)inst_base->component;
|
||||||
int shift_imm = inst_cream->imm ? inst_cream->imm : 31;
|
int shift_imm = inst_cream->imm ? inst_cream->imm : 31;
|
||||||
RD = ((static_cast<s32>(RM) >> shift_imm) & 0xFFFF) | (RN & 0xFFFF0000);
|
RD = ((static_cast<s32>(RM) >> shift_imm) & 0xFFFF) | (RN & 0xFFFF0000);
|
||||||
|
@ -4982,7 +4982,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
QDSUB_INST:
|
QDSUB_INST:
|
||||||
QSUB_INST:
|
QSUB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
const u8 op1 = inst_cream->op1;
|
const u8 op1 = inst_cream->op1;
|
||||||
const u32 rm_val = RM;
|
const u32 rm_val = RM;
|
||||||
|
@ -5057,7 +5057,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
QSUB16_INST:
|
QSUB16_INST:
|
||||||
QSUBADDX_INST:
|
QSUBADDX_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
const u16 rm_lo = (RM & 0xFFFF);
|
const u16 rm_lo = (RM & 0xFFFF);
|
||||||
const u16 rm_hi = ((RM >> 16) & 0xFFFF);
|
const u16 rm_hi = ((RM >> 16) & 0xFFFF);
|
||||||
|
@ -5117,7 +5117,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
REVSH_INST:
|
REVSH_INST:
|
||||||
{
|
{
|
||||||
|
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
rev_inst* const inst_cream = (rev_inst*)inst_base->component;
|
rev_inst* const inst_cream = (rev_inst*)inst_base->component;
|
||||||
|
|
||||||
const u8 op1 = inst_cream->op1;
|
const u8 op1 = inst_cream->op1;
|
||||||
|
@ -5162,7 +5162,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
RSB_INST:
|
RSB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
rsb_inst* const inst_cream = (rsb_inst*)inst_base->component;
|
rsb_inst* const inst_cream = (rsb_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 rn_val = RN;
|
u32 rn_val = RN;
|
||||||
|
@ -5197,7 +5197,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
RSC_INST:
|
RSC_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
rsc_inst* const inst_cream = (rsc_inst*)inst_base->component;
|
rsc_inst* const inst_cream = (rsc_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 rn_val = RN;
|
u32 rn_val = RN;
|
||||||
|
@ -5238,7 +5238,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
SSUBADDX_INST:
|
SSUBADDX_INST:
|
||||||
SSUB16_INST:
|
SSUB16_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
const u8 op2 = inst_cream->op2;
|
const u8 op2 = inst_cream->op2;
|
||||||
|
|
||||||
|
@ -5341,7 +5341,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
SBC_INST:
|
SBC_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
sbc_inst* const inst_cream = (sbc_inst*)inst_base->component;
|
sbc_inst* const inst_cream = (sbc_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 rn_val = RN;
|
u32 rn_val = RN;
|
||||||
|
@ -5377,7 +5377,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
SEL_INST:
|
SEL_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
|
|
||||||
const u32 to = RM;
|
const u32 to = RM;
|
||||||
|
@ -5436,7 +5436,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
SEV_INST:
|
SEV_INST:
|
||||||
{
|
{
|
||||||
// Stubbed, as SEV is a hint instruction.
|
// Stubbed, as SEV is a hint instruction.
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
LOG_TRACE(Core_ARM11, "SEV executed.");
|
LOG_TRACE(Core_ARM11, "SEV executed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5453,7 +5453,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
SHSUB16_INST:
|
SHSUB16_INST:
|
||||||
SHSUBADDX_INST:
|
SHSUBADDX_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
|
|
||||||
const u8 op2 = inst_cream->op2;
|
const u8 op2 = inst_cream->op2;
|
||||||
|
@ -5520,7 +5520,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
SMLA_INST:
|
SMLA_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
smla_inst* inst_cream = (smla_inst*)inst_base->component;
|
smla_inst* inst_cream = (smla_inst*)inst_base->component;
|
||||||
s32 operand1, operand2;
|
s32 operand1, operand2;
|
||||||
if (inst_cream->x == 0)
|
if (inst_cream->x == 0)
|
||||||
|
@ -5548,7 +5548,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
SMUAD_INST:
|
SMUAD_INST:
|
||||||
SMUSD_INST:
|
SMUSD_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
smlad_inst* const inst_cream = (smlad_inst*)inst_base->component;
|
smlad_inst* const inst_cream = (smlad_inst*)inst_base->component;
|
||||||
const u8 op2 = inst_cream->op2;
|
const u8 op2 = inst_cream->op2;
|
||||||
|
|
||||||
|
@ -5601,7 +5601,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
SMLAL_INST:
|
SMLAL_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
umlal_inst* inst_cream = (umlal_inst*)inst_base->component;
|
umlal_inst* inst_cream = (umlal_inst*)inst_base->component;
|
||||||
long long int rm = RM;
|
long long int rm = RM;
|
||||||
long long int rs = RS;
|
long long int rs = RS;
|
||||||
|
@ -5630,7 +5630,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
SMLALXY_INST:
|
SMLALXY_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
smlalxy_inst* const inst_cream = (smlalxy_inst*)inst_base->component;
|
smlalxy_inst* const inst_cream = (smlalxy_inst*)inst_base->component;
|
||||||
|
|
||||||
u64 operand1 = RN;
|
u64 operand1 = RN;
|
||||||
|
@ -5660,7 +5660,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
SMLAW_INST:
|
SMLAW_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
smlad_inst* const inst_cream = (smlad_inst*)inst_base->component;
|
smlad_inst* const inst_cream = (smlad_inst*)inst_base->component;
|
||||||
|
|
||||||
const u32 rm_val = RM;
|
const u32 rm_val = RM;
|
||||||
|
@ -5686,7 +5686,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
SMLALD_INST:
|
SMLALD_INST:
|
||||||
SMLSLD_INST:
|
SMLSLD_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
smlald_inst* const inst_cream = (smlald_inst*)inst_base->component;
|
smlald_inst* const inst_cream = (smlald_inst*)inst_base->component;
|
||||||
|
|
||||||
const bool do_swap = (inst_cream->swap == 1);
|
const bool do_swap = (inst_cream->swap == 1);
|
||||||
|
@ -5725,7 +5725,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
SMMLS_INST:
|
SMMLS_INST:
|
||||||
SMMUL_INST:
|
SMMUL_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
smlad_inst* const inst_cream = (smlad_inst*)inst_base->component;
|
smlad_inst* const inst_cream = (smlad_inst*)inst_base->component;
|
||||||
|
|
||||||
const u32 rm_val = RM;
|
const u32 rm_val = RM;
|
||||||
|
@ -5759,7 +5759,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
SMUL_INST:
|
SMUL_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
smul_inst* inst_cream = (smul_inst*)inst_base->component;
|
smul_inst* inst_cream = (smul_inst*)inst_base->component;
|
||||||
u32 operand1, operand2;
|
u32 operand1, operand2;
|
||||||
if (inst_cream->x == 0)
|
if (inst_cream->x == 0)
|
||||||
|
@ -5780,7 +5780,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
SMULL_INST:
|
SMULL_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
umull_inst* inst_cream = (umull_inst*)inst_base->component;
|
umull_inst* inst_cream = (umull_inst*)inst_base->component;
|
||||||
s64 rm = RM;
|
s64 rm = RM;
|
||||||
s64 rs = RS;
|
s64 rs = RS;
|
||||||
|
@ -5807,7 +5807,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
SMULW_INST:
|
SMULW_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
smlad_inst* const inst_cream = (smlad_inst*)inst_base->component;
|
smlad_inst* const inst_cream = (smlad_inst*)inst_base->component;
|
||||||
|
|
||||||
s16 rm = (inst_cream->m == 1) ? ((RM >> 16) & 0xFFFF) : (RM & 0xFFFF);
|
s16 rm = (inst_cream->m == 1) ? ((RM >> 16) & 0xFFFF) : (RM & 0xFFFF);
|
||||||
|
@ -5840,7 +5840,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
SSAT_INST:
|
SSAT_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ssat_inst* const inst_cream = (ssat_inst*)inst_base->component;
|
ssat_inst* const inst_cream = (ssat_inst*)inst_base->component;
|
||||||
|
|
||||||
u8 shift_type = inst_cream->shift_type;
|
u8 shift_type = inst_cream->shift_type;
|
||||||
|
@ -5873,7 +5873,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
SSAT16_INST:
|
SSAT16_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ssat_inst* const inst_cream = (ssat_inst*)inst_base->component;
|
ssat_inst* const inst_cream = (ssat_inst*)inst_base->component;
|
||||||
const u8 saturate_to = inst_cream->sat_imm;
|
const u8 saturate_to = inst_cream->sat_imm;
|
||||||
|
|
||||||
|
@ -5904,7 +5904,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
STM_INST:
|
STM_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
unsigned int inst = inst_cream->inst;
|
unsigned int inst = inst_cream->inst;
|
||||||
|
|
||||||
|
@ -5962,7 +5962,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
SXTB_INST:
|
SXTB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
sxtb_inst* inst_cream = (sxtb_inst*)inst_base->component;
|
sxtb_inst* inst_cream = (sxtb_inst*)inst_base->component;
|
||||||
|
|
||||||
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate);
|
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate);
|
||||||
|
@ -5980,7 +5980,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
STR_INST:
|
STR_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
|
|
||||||
|
@ -5999,7 +5999,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
UXTB_INST:
|
UXTB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
uxtb_inst* inst_cream = (uxtb_inst*)inst_base->component;
|
uxtb_inst* inst_cream = (uxtb_inst*)inst_base->component;
|
||||||
RD = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xff;
|
RD = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xff;
|
||||||
}
|
}
|
||||||
|
@ -6010,7 +6010,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
UXTAB_INST:
|
UXTAB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
uxtab_inst* inst_cream = (uxtab_inst*)inst_base->component;
|
uxtab_inst* inst_cream = (uxtab_inst*)inst_base->component;
|
||||||
|
|
||||||
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xff;
|
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xff;
|
||||||
|
@ -6023,7 +6023,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
STRB_INST:
|
STRB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
unsigned int value = cpu->Reg[BITS(inst_cream->inst, 12, 15)] & 0xff;
|
unsigned int value = cpu->Reg[BITS(inst_cream->inst, 12, 15)] & 0xff;
|
||||||
|
@ -6036,7 +6036,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
STRBT_INST:
|
STRBT_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
unsigned int value = cpu->Reg[BITS(inst_cream->inst, 12, 15)] & 0xff;
|
unsigned int value = cpu->Reg[BITS(inst_cream->inst, 12, 15)] & 0xff;
|
||||||
|
@ -6049,7 +6049,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
STRD_INST:
|
STRD_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
|
|
||||||
|
@ -6065,7 +6065,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
STREX_INST:
|
STREX_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
unsigned int write_addr = cpu->Reg[inst_cream->Rn];
|
unsigned int write_addr = cpu->Reg[inst_cream->Rn];
|
||||||
|
|
||||||
|
@ -6085,7 +6085,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
STREXB_INST:
|
STREXB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
unsigned int write_addr = cpu->Reg[inst_cream->Rn];
|
unsigned int write_addr = cpu->Reg[inst_cream->Rn];
|
||||||
|
|
||||||
|
@ -6105,7 +6105,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
STREXD_INST:
|
STREXD_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
unsigned int write_addr = cpu->Reg[inst_cream->Rn];
|
unsigned int write_addr = cpu->Reg[inst_cream->Rn];
|
||||||
|
|
||||||
|
@ -6136,7 +6136,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
STREXH_INST:
|
STREXH_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
unsigned int write_addr = cpu->Reg[inst_cream->Rn];
|
unsigned int write_addr = cpu->Reg[inst_cream->Rn];
|
||||||
|
|
||||||
|
@ -6156,7 +6156,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
STRH_INST:
|
STRH_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
|
|
||||||
|
@ -6170,7 +6170,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
STRT_INST:
|
STRT_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
ldst_inst* inst_cream = (ldst_inst*)inst_base->component;
|
||||||
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
inst_cream->get_addr(cpu, inst_cream->inst, addr);
|
||||||
|
|
||||||
|
@ -6184,7 +6184,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
SUB_INST:
|
SUB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
sub_inst* const inst_cream = (sub_inst*)inst_base->component;
|
sub_inst* const inst_cream = (sub_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 rn_val = RN;
|
u32 rn_val = RN;
|
||||||
|
@ -6219,7 +6219,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
SWI_INST:
|
SWI_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
swi_inst* const inst_cream = (swi_inst*)inst_base->component;
|
swi_inst* const inst_cream = (swi_inst*)inst_base->component;
|
||||||
SVC::CallSVC(inst_cream->num & 0xFFFF);
|
SVC::CallSVC(inst_cream->num & 0xFFFF);
|
||||||
}
|
}
|
||||||
|
@ -6231,7 +6231,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
SWP_INST:
|
SWP_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
swp_inst* inst_cream = (swp_inst*)inst_base->component;
|
swp_inst* inst_cream = (swp_inst*)inst_base->component;
|
||||||
|
|
||||||
addr = RN;
|
addr = RN;
|
||||||
|
@ -6247,7 +6247,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
SWPB_INST:
|
SWPB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
swp_inst* inst_cream = (swp_inst*)inst_base->component;
|
swp_inst* inst_cream = (swp_inst*)inst_base->component;
|
||||||
addr = RN;
|
addr = RN;
|
||||||
unsigned int value = Memory::Read8(addr);
|
unsigned int value = Memory::Read8(addr);
|
||||||
|
@ -6261,7 +6261,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
SXTAB_INST:
|
SXTAB_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
sxtab_inst* inst_cream = (sxtab_inst*)inst_base->component;
|
sxtab_inst* inst_cream = (sxtab_inst*)inst_base->component;
|
||||||
|
|
||||||
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xff;
|
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xff;
|
||||||
|
@ -6279,7 +6279,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
SXTAB16_INST:
|
SXTAB16_INST:
|
||||||
SXTB16_INST:
|
SXTB16_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
sxtab_inst* const inst_cream = (sxtab_inst*)inst_base->component;
|
sxtab_inst* const inst_cream = (sxtab_inst*)inst_base->component;
|
||||||
|
|
||||||
const u8 rotation = inst_cream->rotate * 8;
|
const u8 rotation = inst_cream->rotate * 8;
|
||||||
|
@ -6311,7 +6311,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
SXTAH_INST:
|
SXTAH_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
sxtah_inst* inst_cream = (sxtah_inst*)inst_base->component;
|
sxtah_inst* inst_cream = (sxtah_inst*)inst_base->component;
|
||||||
|
|
||||||
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xffff;
|
unsigned int operand2 = ROTATE_RIGHT_32(RM, 8 * inst_cream->rotate) & 0xffff;
|
||||||
|
@ -6327,7 +6327,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
TEQ_INST:
|
TEQ_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
teq_inst* const inst_cream = (teq_inst*)inst_base->component;
|
teq_inst* const inst_cream = (teq_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 lop = RN;
|
u32 lop = RN;
|
||||||
|
@ -6349,7 +6349,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
TST_INST:
|
TST_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
tst_inst* const inst_cream = (tst_inst*)inst_base->component;
|
tst_inst* const inst_cream = (tst_inst*)inst_base->component;
|
||||||
|
|
||||||
u32 lop = RN;
|
u32 lop = RN;
|
||||||
|
@ -6377,7 +6377,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
USUB16_INST:
|
USUB16_INST:
|
||||||
USUBADDX_INST:
|
USUBADDX_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
|
|
||||||
const u8 op2 = inst_cream->op2;
|
const u8 op2 = inst_cream->op2;
|
||||||
|
@ -6548,7 +6548,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
UHSUB8_INST:
|
UHSUB8_INST:
|
||||||
UHSUB16_INST:
|
UHSUB16_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
const u32 rm_val = RM;
|
const u32 rm_val = RM;
|
||||||
const u32 rn_val = RN;
|
const u32 rn_val = RN;
|
||||||
|
@ -6623,7 +6623,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
UMAAL_INST:
|
UMAAL_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
umaal_inst* const inst_cream = (umaal_inst*)inst_base->component;
|
umaal_inst* const inst_cream = (umaal_inst*)inst_base->component;
|
||||||
const u64 rm = RM;
|
const u64 rm = RM;
|
||||||
const u64 rn = RN;
|
const u64 rn = RN;
|
||||||
|
@ -6641,7 +6641,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
UMLAL_INST:
|
UMLAL_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
umlal_inst* inst_cream = (umlal_inst*)inst_base->component;
|
umlal_inst* inst_cream = (umlal_inst*)inst_base->component;
|
||||||
unsigned long long int rm = RM;
|
unsigned long long int rm = RM;
|
||||||
unsigned long long int rs = RS;
|
unsigned long long int rs = RS;
|
||||||
|
@ -6664,7 +6664,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
}
|
}
|
||||||
UMULL_INST:
|
UMULL_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
umull_inst* inst_cream = (umull_inst*)inst_base->component;
|
umull_inst* inst_cream = (umull_inst*)inst_base->component;
|
||||||
unsigned long long int rm = RM;
|
unsigned long long int rm = RM;
|
||||||
unsigned long long int rs = RS;
|
unsigned long long int rs = RS;
|
||||||
|
@ -6738,7 +6738,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
UQSUB16_INST:
|
UQSUB16_INST:
|
||||||
UQSUBADDX_INST:
|
UQSUBADDX_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* const inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
|
|
||||||
const u8 op2 = inst_cream->op2;
|
const u8 op2 = inst_cream->op2;
|
||||||
|
@ -6795,7 +6795,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
USAD8_INST:
|
USAD8_INST:
|
||||||
USADA8_INST:
|
USADA8_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
generic_arm_inst* inst_cream = (generic_arm_inst*)inst_base->component;
|
||||||
|
|
||||||
const u8 ra_idx = inst_cream->Ra;
|
const u8 ra_idx = inst_cream->Ra;
|
||||||
|
@ -6824,7 +6824,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
USAT_INST:
|
USAT_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ssat_inst* const inst_cream = (ssat_inst*)inst_base->component;
|
ssat_inst* const inst_cream = (ssat_inst*)inst_base->component;
|
||||||
|
|
||||||
u8 shift_type = inst_cream->shift_type;
|
u8 shift_type = inst_cream->shift_type;
|
||||||
|
@ -6857,7 +6857,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
|
|
||||||
USAT16_INST:
|
USAT16_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
ssat_inst* const inst_cream = (ssat_inst*)inst_base->component;
|
ssat_inst* const inst_cream = (ssat_inst*)inst_base->component;
|
||||||
const u8 saturate_to = inst_cream->sat_imm;
|
const u8 saturate_to = inst_cream->sat_imm;
|
||||||
|
|
||||||
|
@ -6880,7 +6880,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
UXTAB16_INST:
|
UXTAB16_INST:
|
||||||
UXTB16_INST:
|
UXTB16_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
uxtab_inst* const inst_cream = (uxtab_inst*)inst_base->component;
|
uxtab_inst* const inst_cream = (uxtab_inst*)inst_base->component;
|
||||||
|
|
||||||
const u8 rn_idx = inst_cream->Rn;
|
const u8 rn_idx = inst_cream->Rn;
|
||||||
|
@ -6911,7 +6911,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
WFE_INST:
|
WFE_INST:
|
||||||
{
|
{
|
||||||
// Stubbed, as WFE is a hint instruction.
|
// Stubbed, as WFE is a hint instruction.
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
LOG_TRACE(Core_ARM11, "WFE executed.");
|
LOG_TRACE(Core_ARM11, "WFE executed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6924,7 +6924,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
WFI_INST:
|
WFI_INST:
|
||||||
{
|
{
|
||||||
// Stubbed, as WFI is a hint instruction.
|
// Stubbed, as WFI is a hint instruction.
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
LOG_TRACE(Core_ARM11, "WFI executed.");
|
LOG_TRACE(Core_ARM11, "WFI executed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6937,7 +6937,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
||||||
YIELD_INST:
|
YIELD_INST:
|
||||||
{
|
{
|
||||||
// Stubbed, as YIELD is a hint instruction.
|
// Stubbed, as YIELD is a hint instruction.
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
LOG_TRACE(Core_ARM11, "YIELD executed.");
|
LOG_TRACE(Core_ARM11, "YIELD executed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmla)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMLA_INST:
|
VMLA_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vmla_inst *inst_cream = (vmla_inst *)inst_base->component;
|
vmla_inst *inst_cream = (vmla_inst *)inst_base->component;
|
||||||
|
@ -86,7 +86,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmls)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMLS_INST:
|
VMLS_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vmls_inst *inst_cream = (vmls_inst *)inst_base->component;
|
vmls_inst *inst_cream = (vmls_inst *)inst_base->component;
|
||||||
|
@ -135,7 +135,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vnmla)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VNMLA_INST:
|
VNMLA_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vnmla_inst *inst_cream = (vnmla_inst *)inst_base->component;
|
vnmla_inst *inst_cream = (vnmla_inst *)inst_base->component;
|
||||||
|
@ -185,7 +185,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vnmls)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VNMLS_INST:
|
VNMLS_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vnmls_inst *inst_cream = (vnmls_inst *)inst_base->component;
|
vnmls_inst *inst_cream = (vnmls_inst *)inst_base->component;
|
||||||
|
@ -234,7 +234,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vnmul)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VNMUL_INST:
|
VNMUL_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vnmul_inst *inst_cream = (vnmul_inst *)inst_base->component;
|
vnmul_inst *inst_cream = (vnmul_inst *)inst_base->component;
|
||||||
|
@ -283,7 +283,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmul)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMUL_INST:
|
VMUL_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vmul_inst *inst_cream = (vmul_inst *)inst_base->component;
|
vmul_inst *inst_cream = (vmul_inst *)inst_base->component;
|
||||||
|
@ -332,7 +332,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vadd)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VADD_INST:
|
VADD_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vadd_inst *inst_cream = (vadd_inst *)inst_base->component;
|
vadd_inst *inst_cream = (vadd_inst *)inst_base->component;
|
||||||
|
@ -381,7 +381,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vsub)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VSUB_INST:
|
VSUB_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vsub_inst *inst_cream = (vsub_inst *)inst_base->component;
|
vsub_inst *inst_cream = (vsub_inst *)inst_base->component;
|
||||||
|
@ -430,7 +430,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vdiv)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VDIV_INST:
|
VDIV_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vdiv_inst *inst_cream = (vdiv_inst *)inst_base->component;
|
vdiv_inst *inst_cream = (vdiv_inst *)inst_base->component;
|
||||||
|
@ -485,7 +485,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovi)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMOVI_INST:
|
VMOVI_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vmovi_inst *inst_cream = (vmovi_inst *)inst_base->component;
|
vmovi_inst *inst_cream = (vmovi_inst *)inst_base->component;
|
||||||
|
@ -529,7 +529,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovr)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMOVR_INST:
|
VMOVR_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vmovr_inst *inst_cream = (vmovr_inst *)inst_base->component;
|
vmovr_inst *inst_cream = (vmovr_inst *)inst_base->component;
|
||||||
|
@ -571,7 +571,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vabs)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VABS_INST:
|
VABS_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vabs_inst *inst_cream = (vabs_inst *)inst_base->component;
|
vabs_inst *inst_cream = (vabs_inst *)inst_base->component;
|
||||||
|
@ -621,7 +621,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vneg)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VNEG_INST:
|
VNEG_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vneg_inst *inst_cream = (vneg_inst *)inst_base->component;
|
vneg_inst *inst_cream = (vneg_inst *)inst_base->component;
|
||||||
|
@ -670,7 +670,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vsqrt)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VSQRT_INST:
|
VSQRT_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vsqrt_inst *inst_cream = (vsqrt_inst *)inst_base->component;
|
vsqrt_inst *inst_cream = (vsqrt_inst *)inst_base->component;
|
||||||
|
@ -719,7 +719,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vcmp)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VCMP_INST:
|
VCMP_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vcmp_inst *inst_cream = (vcmp_inst *)inst_base->component;
|
vcmp_inst *inst_cream = (vcmp_inst *)inst_base->component;
|
||||||
|
@ -768,7 +768,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vcmp2)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VCMP2_INST:
|
VCMP2_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vcmp2_inst *inst_cream = (vcmp2_inst *)inst_base->component;
|
vcmp2_inst *inst_cream = (vcmp2_inst *)inst_base->component;
|
||||||
|
@ -817,7 +817,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vcvtbds)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VCVTBDS_INST:
|
VCVTBDS_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vcvtbds_inst *inst_cream = (vcvtbds_inst *)inst_base->component;
|
vcvtbds_inst *inst_cream = (vcvtbds_inst *)inst_base->component;
|
||||||
|
@ -868,7 +868,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vcvtbff)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VCVTBFF_INST:
|
VCVTBFF_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vcvtbff_inst *inst_cream = (vcvtbff_inst *)inst_base->component;
|
vcvtbff_inst *inst_cream = (vcvtbff_inst *)inst_base->component;
|
||||||
|
@ -917,7 +917,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vcvtbfi)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VCVTBFI_INST:
|
VCVTBFI_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vcvtbfi_inst *inst_cream = (vcvtbfi_inst *)inst_base->component;
|
vcvtbfi_inst *inst_cream = (vcvtbfi_inst *)inst_base->component;
|
||||||
|
@ -974,7 +974,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrs)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMOVBRS_INST:
|
VMOVBRS_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vmovbrs_inst *inst_cream = (vmovbrs_inst *)inst_base->component;
|
vmovbrs_inst *inst_cream = (vmovbrs_inst *)inst_base->component;
|
||||||
|
@ -1017,7 +1017,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmsr)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMSR_INST:
|
VMSR_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
/* FIXME: special case for access to FPSID and FPEXC, VFP must be disabled ,
|
/* FIXME: special case for access to FPSID and FPEXC, VFP must be disabled ,
|
||||||
and in privileged mode */
|
and in privileged mode */
|
||||||
/* Exceptions must be checked, according to v7 ref manual */
|
/* Exceptions must be checked, according to v7 ref manual */
|
||||||
|
@ -1083,7 +1083,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrc)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMOVBRC_INST:
|
VMOVBRC_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vmovbrc_inst* const inst_cream = (vmovbrc_inst*)inst_base->component;
|
vmovbrc_inst* const inst_cream = (vmovbrc_inst*)inst_base->component;
|
||||||
|
@ -1126,7 +1126,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmrs)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMRS_INST:
|
VMRS_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
/* FIXME: special case for access to FPSID and FPEXC, VFP must be disabled,
|
/* FIXME: special case for access to FPSID and FPEXC, VFP must be disabled,
|
||||||
and in privileged mode */
|
and in privileged mode */
|
||||||
/* Exceptions must be checked, according to v7 ref manual */
|
/* Exceptions must be checked, according to v7 ref manual */
|
||||||
|
@ -1214,7 +1214,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbcr)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMOVBCR_INST:
|
VMOVBCR_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vmovbcr_inst* const inst_cream = (vmovbcr_inst*) inst_base->component;
|
vmovbcr_inst* const inst_cream = (vmovbcr_inst*) inst_base->component;
|
||||||
|
@ -1266,7 +1266,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrrss)(unsigned int inst, int inde
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMOVBRRSS_INST:
|
VMOVBRRSS_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vmovbrrss_inst* const inst_cream = (vmovbrrss_inst*)inst_base->component;
|
vmovbrrss_inst* const inst_cream = (vmovbrrss_inst*)inst_base->component;
|
||||||
|
@ -1314,7 +1314,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vmovbrrd)(unsigned int inst, int index
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VMOVBRRD_INST:
|
VMOVBRRD_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vmovbrrd_inst *inst_cream = (vmovbrrd_inst *)inst_base->component;
|
vmovbrrd_inst *inst_cream = (vmovbrrd_inst *)inst_base->component;
|
||||||
|
@ -1368,7 +1368,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vstr)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VSTR_INST:
|
VSTR_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vstr_inst *inst_cream = (vstr_inst *)inst_base->component;
|
vstr_inst *inst_cream = (vstr_inst *)inst_base->component;
|
||||||
|
@ -1433,7 +1433,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vpush)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VPUSH_INST:
|
VPUSH_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vpush_inst *inst_cream = (vpush_inst *)inst_base->component;
|
vpush_inst *inst_cream = (vpush_inst *)inst_base->component;
|
||||||
|
@ -1511,7 +1511,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vstm)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VSTM_INST: /* encoding 1 */
|
VSTM_INST: /* encoding 1 */
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vstm_inst* inst_cream = (vstm_inst*)inst_base->component;
|
vstm_inst* inst_cream = (vstm_inst*)inst_base->component;
|
||||||
|
@ -1593,7 +1593,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vpop)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VPOP_INST:
|
VPOP_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vpop_inst *inst_cream = (vpop_inst *)inst_base->component;
|
vpop_inst *inst_cream = (vpop_inst *)inst_base->component;
|
||||||
|
@ -1667,7 +1667,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vldr)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VLDR_INST:
|
VLDR_INST:
|
||||||
{
|
{
|
||||||
if ((inst_base->cond == 0xe) || CondPassed(cpu, inst_base->cond)) {
|
if ((inst_base->cond == ConditionCode::AL) || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vldr_inst *inst_cream = (vldr_inst *)inst_base->component;
|
vldr_inst *inst_cream = (vldr_inst *)inst_base->component;
|
||||||
|
@ -1738,7 +1738,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(vldm)(unsigned int inst, int index)
|
||||||
#ifdef VFP_INTERPRETER_IMPL
|
#ifdef VFP_INTERPRETER_IMPL
|
||||||
VLDM_INST:
|
VLDM_INST:
|
||||||
{
|
{
|
||||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
if (inst_base->cond == ConditionCode::AL || CondPassed(cpu, inst_base->cond)) {
|
||||||
CHECK_VFP_ENABLED;
|
CHECK_VFP_ENABLED;
|
||||||
|
|
||||||
vldm_inst* inst_cream = (vldm_inst*)inst_base->component;
|
vldm_inst* inst_cream = (vldm_inst*)inst_base->component;
|
||||||
|
|
Reference in New Issue