diff options
author | Lioncash <mathew1800@gmail.com> | 2015-07-20 04:20:14 +0200 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2015-07-20 04:20:14 +0200 |
commit | a2f0a3d01978930f6615047eedf6d9e8307b0658 (patch) | |
tree | 0319859f690d80419b1e689fa70eed6edd47c306 /src/core/arm/dyncom/arm_dyncom_interpreter.cpp | |
parent | Merge pull request #949 from yuriks/fix-st (diff) | |
download | yuzu-a2f0a3d01978930f6615047eedf6d9e8307b0658.tar yuzu-a2f0a3d01978930f6615047eedf6d9e8307b0658.tar.gz yuzu-a2f0a3d01978930f6615047eedf6d9e8307b0658.tar.bz2 yuzu-a2f0a3d01978930f6615047eedf6d9e8307b0658.tar.lz yuzu-a2f0a3d01978930f6615047eedf6d9e8307b0658.tar.xz yuzu-a2f0a3d01978930f6615047eedf6d9e8307b0658.tar.zst yuzu-a2f0a3d01978930f6615047eedf6d9e8307b0658.zip |
Diffstat (limited to 'src/core/arm/dyncom/arm_dyncom_interpreter.cpp')
-rw-r--r-- | src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp index 34cfb8cb2..e40f3fa93 100644 --- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp +++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp @@ -4144,11 +4144,13 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) { if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) { bx_inst* const inst_cream = (bx_inst*)inst_base->component; + u32 address = RM; + if (inst_cream->Rm == 15) - LOG_WARNING(Core_ARM11, "BX at pc %x: use of Rm = R15 is discouraged", cpu->Reg[15]); + address += 2 * GET_INST_SIZE(cpu); - cpu->TFlag = cpu->Reg[inst_cream->Rm] & 0x1; - cpu->Reg[15] = cpu->Reg[inst_cream->Rm] & 0xfffffffe; + cpu->TFlag = address & 1; + cpu->Reg[15] = address & 0xfffffffe; INC_PC(sizeof(bx_inst)); goto DISPATCH; } |