ソースを参照

Merge pull request #1645 from mailwl/thumb_pc

Fix thumb ADR instruction alignment
Mathew Maidment 10 年 前
コミット
0408f1191a
1 ファイル変更2 行追加6 行削除
  1. 2 6
      src/core/arm/dyncom/arm_dyncom_interpreter.cpp

+ 2 - 6
src/core/arm/dyncom/arm_dyncom_interpreter.cpp

@@ -3955,9 +3955,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
         if (inst_base->cond == ConditionCode::AL || 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;
-            if (inst_cream->Rn == 15)
-                rn_val += 2 * cpu->GetInstructionSize();
+            u32 rn_val = CHECK_READ_REG15_WA(cpu, inst_cream->Rn);
 
 
             bool carry;
             bool carry;
             bool overflow;
             bool overflow;
@@ -6167,9 +6165,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
         if (inst_base->cond == ConditionCode::AL || 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;
-            if (inst_cream->Rn == 15)
-                rn_val += 2 * cpu->GetInstructionSize();
+            u32 rn_val = CHECK_READ_REG15_WA(cpu, inst_cream->Rn);
 
 
             bool carry;
             bool carry;
             bool overflow;
             bool overflow;