summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2015-07-20 04:20:14 +0200
committerLioncash <mathew1800@gmail.com>2015-07-20 04:20:14 +0200
commita2f0a3d01978930f6615047eedf6d9e8307b0658 (patch)
tree0319859f690d80419b1e689fa70eed6edd47c306
parentMerge pull request #949 from yuriks/fix-st (diff)
downloadyuzu-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
-rw-r--r--src/core/arm/dyncom/arm_dyncom_interpreter.cpp8
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;
}