diff options
| -rw-r--r-- | src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 82 |
1 files changed, 39 insertions, 43 deletions
diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp index f56a84518..f899e2e8a 100644 --- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp +++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp | |||
| @@ -3747,7 +3747,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 3747 | #endif | 3747 | #endif |
| 3748 | 3748 | ||
| 3749 | #define FETCH_INST if (inst_base->br != NON_BRANCH) \ | 3749 | #define FETCH_INST if (inst_base->br != NON_BRANCH) \ |
| 3750 | goto PROFILING; \ | 3750 | goto DISPATCH; \ |
| 3751 | inst_base = (arm_inst *)&inst_buf[ptr] | 3751 | inst_base = (arm_inst *)&inst_buf[ptr] |
| 3752 | #define INC_PC(l) ptr += sizeof(arm_inst) + l | 3752 | #define INC_PC(l) ptr += sizeof(arm_inst) + l |
| 3753 | 3753 | ||
| @@ -4180,10 +4180,6 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4180 | inst_base = (arm_inst *)&inst_buf[ptr]; | 4180 | inst_base = (arm_inst *)&inst_buf[ptr]; |
| 4181 | GOTO_NEXT_INST; | 4181 | GOTO_NEXT_INST; |
| 4182 | } | 4182 | } |
| 4183 | PROFILING: | ||
| 4184 | { | ||
| 4185 | goto DISPATCH; | ||
| 4186 | } | ||
| 4187 | ADC_INST: | 4183 | ADC_INST: |
| 4188 | { | 4184 | { |
| 4189 | INC_ICOUNTER; | 4185 | INC_ICOUNTER; |
| @@ -4208,7 +4204,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4208 | } | 4204 | } |
| 4209 | if (inst_cream->Rd == 15) { | 4205 | if (inst_cream->Rd == 15) { |
| 4210 | INC_PC(sizeof(adc_inst)); | 4206 | INC_PC(sizeof(adc_inst)); |
| 4211 | goto PROFILING; | 4207 | goto DISPATCH; |
| 4212 | } | 4208 | } |
| 4213 | } | 4209 | } |
| 4214 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4210 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4242,7 +4238,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4242 | } | 4238 | } |
| 4243 | if (inst_cream->Rd == 15) { | 4239 | if (inst_cream->Rd == 15) { |
| 4244 | INC_PC(sizeof(add_inst)); | 4240 | INC_PC(sizeof(add_inst)); |
| 4245 | goto PROFILING; | 4241 | goto DISPATCH; |
| 4246 | } | 4242 | } |
| 4247 | } | 4243 | } |
| 4248 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4244 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4273,7 +4269,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4273 | } | 4269 | } |
| 4274 | if (inst_cream->Rd == 15) { | 4270 | if (inst_cream->Rd == 15) { |
| 4275 | INC_PC(sizeof(and_inst)); | 4271 | INC_PC(sizeof(and_inst)); |
| 4276 | goto PROFILING; | 4272 | goto DISPATCH; |
| 4277 | } | 4273 | } |
| 4278 | } | 4274 | } |
| 4279 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4275 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4291,11 +4287,11 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4291 | } | 4287 | } |
| 4292 | SET_PC; | 4288 | SET_PC; |
| 4293 | INC_PC(sizeof(bbl_inst)); | 4289 | INC_PC(sizeof(bbl_inst)); |
| 4294 | goto PROFILING; | 4290 | goto DISPATCH; |
| 4295 | } | 4291 | } |
| 4296 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4292 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| 4297 | INC_PC(sizeof(bbl_inst)); | 4293 | INC_PC(sizeof(bbl_inst)); |
| 4298 | goto PROFILING; | 4294 | goto DISPATCH; |
| 4299 | } | 4295 | } |
| 4300 | BIC_INST: | 4296 | BIC_INST: |
| 4301 | { | 4297 | { |
| @@ -4323,7 +4319,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4323 | } | 4319 | } |
| 4324 | if (inst_cream->Rd == 15) { | 4320 | if (inst_cream->Rd == 15) { |
| 4325 | INC_PC(sizeof(bic_inst)); | 4321 | INC_PC(sizeof(bic_inst)); |
| 4326 | goto PROFILING; | 4322 | goto DISPATCH; |
| 4327 | } | 4323 | } |
| 4328 | } | 4324 | } |
| 4329 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4325 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4359,12 +4355,12 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4359 | //DEBUG_MSG; | 4355 | //DEBUG_MSG; |
| 4360 | } | 4356 | } |
| 4361 | INC_PC(sizeof(blx_inst)); | 4357 | INC_PC(sizeof(blx_inst)); |
| 4362 | goto PROFILING; | 4358 | goto DISPATCH; |
| 4363 | } | 4359 | } |
| 4364 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4360 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| 4365 | // INC_PC(sizeof(bx_inst)); | 4361 | // INC_PC(sizeof(bx_inst)); |
| 4366 | INC_PC(sizeof(blx_inst)); | 4362 | INC_PC(sizeof(blx_inst)); |
| 4367 | goto PROFILING; | 4363 | goto DISPATCH; |
| 4368 | } | 4364 | } |
| 4369 | BX_INST: | 4365 | BX_INST: |
| 4370 | { | 4366 | { |
| @@ -4377,12 +4373,12 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4377 | cpu->Reg[15] = cpu->Reg[inst_cream->Rm] & 0xfffffffe; | 4373 | cpu->Reg[15] = cpu->Reg[inst_cream->Rm] & 0xfffffffe; |
| 4378 | // cpu->TFlag = cpu->Reg[inst_cream->Rm] & 0x1; | 4374 | // cpu->TFlag = cpu->Reg[inst_cream->Rm] & 0x1; |
| 4379 | INC_PC(sizeof(bx_inst)); | 4375 | INC_PC(sizeof(bx_inst)); |
| 4380 | goto PROFILING; | 4376 | goto DISPATCH; |
| 4381 | } | 4377 | } |
| 4382 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4378 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| 4383 | // INC_PC(sizeof(bx_inst)); | 4379 | // INC_PC(sizeof(bx_inst)); |
| 4384 | INC_PC(sizeof(bx_inst)); | 4380 | INC_PC(sizeof(bx_inst)); |
| 4385 | goto PROFILING; | 4381 | goto DISPATCH; |
| 4386 | } | 4382 | } |
| 4387 | BXJ_INST: | 4383 | BXJ_INST: |
| 4388 | CDP_INST: | 4384 | CDP_INST: |
| @@ -4524,7 +4520,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4524 | // RD = RM; | 4520 | // RD = RM; |
| 4525 | if ((inst_cream->Rd == 15)) { | 4521 | if ((inst_cream->Rd == 15)) { |
| 4526 | INC_PC(sizeof(mov_inst)); | 4522 | INC_PC(sizeof(mov_inst)); |
| 4527 | goto PROFILING; | 4523 | goto DISPATCH; |
| 4528 | } | 4524 | } |
| 4529 | } | 4525 | } |
| 4530 | // DEBUG_LOG(ARM11, "cpy inst %x\n", cpu->Reg[15]); | 4526 | // DEBUG_LOG(ARM11, "cpy inst %x\n", cpu->Reg[15]); |
| @@ -4560,7 +4556,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4560 | } | 4556 | } |
| 4561 | if (inst_cream->Rd == 15) { | 4557 | if (inst_cream->Rd == 15) { |
| 4562 | INC_PC(sizeof(eor_inst)); | 4558 | INC_PC(sizeof(eor_inst)); |
| 4563 | goto PROFILING; | 4559 | goto DISPATCH; |
| 4564 | } | 4560 | } |
| 4565 | } | 4561 | } |
| 4566 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4562 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4719,7 +4715,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4719 | } | 4715 | } |
| 4720 | if (BIT(inst, 15)) { | 4716 | if (BIT(inst, 15)) { |
| 4721 | INC_PC(sizeof(ldst_inst)); | 4717 | INC_PC(sizeof(ldst_inst)); |
| 4722 | goto PROFILING; | 4718 | goto DISPATCH; |
| 4723 | } | 4719 | } |
| 4724 | } | 4720 | } |
| 4725 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4721 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4766,7 +4762,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4766 | cpu->TFlag = value & 0x1; | 4762 | cpu->TFlag = value & 0x1; |
| 4767 | cpu->Reg[15] &= 0xFFFFFFFE; | 4763 | cpu->Reg[15] &= 0xFFFFFFFE; |
| 4768 | INC_PC(sizeof(ldst_inst)); | 4764 | INC_PC(sizeof(ldst_inst)); |
| 4769 | goto PROFILING; | 4765 | goto DISPATCH; |
| 4770 | } | 4766 | } |
| 4771 | //} | 4767 | //} |
| 4772 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4768 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4796,7 +4792,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4796 | cpu->TFlag = value & 0x1; | 4792 | cpu->TFlag = value & 0x1; |
| 4797 | cpu->Reg[15] &= 0xFFFFFFFE; | 4793 | cpu->Reg[15] &= 0xFFFFFFFE; |
| 4798 | INC_PC(sizeof(ldst_inst)); | 4794 | INC_PC(sizeof(ldst_inst)); |
| 4799 | goto PROFILING; | 4795 | goto DISPATCH; |
| 4800 | } | 4796 | } |
| 4801 | } | 4797 | } |
| 4802 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4798 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4850,7 +4846,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4850 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; | 4846 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; |
| 4851 | if (BITS(inst_cream->inst, 12, 15) == 15) { | 4847 | if (BITS(inst_cream->inst, 12, 15) == 15) { |
| 4852 | INC_PC(sizeof(ldst_inst)); | 4848 | INC_PC(sizeof(ldst_inst)); |
| 4853 | goto PROFILING; | 4849 | goto DISPATCH; |
| 4854 | } | 4850 | } |
| 4855 | } | 4851 | } |
| 4856 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4852 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4871,7 +4867,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4871 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; | 4867 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; |
| 4872 | if (BITS(inst_cream->inst, 12, 15) == 15) { | 4868 | if (BITS(inst_cream->inst, 12, 15) == 15) { |
| 4873 | INC_PC(sizeof(ldst_inst)); | 4869 | INC_PC(sizeof(ldst_inst)); |
| 4874 | goto PROFILING; | 4870 | goto DISPATCH; |
| 4875 | } | 4871 | } |
| 4876 | } | 4872 | } |
| 4877 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4873 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4928,7 +4924,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4928 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; | 4924 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; |
| 4929 | if (BITS(inst_cream->inst, 12, 15) == 15) { | 4925 | if (BITS(inst_cream->inst, 12, 15) == 15) { |
| 4930 | INC_PC(sizeof(ldst_inst)); | 4926 | INC_PC(sizeof(ldst_inst)); |
| 4931 | goto PROFILING; | 4927 | goto DISPATCH; |
| 4932 | } | 4928 | } |
| 4933 | } | 4929 | } |
| 4934 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4930 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4955,7 +4951,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4955 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; | 4951 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; |
| 4956 | if (BITS(inst_cream->inst, 12, 15) == 15) { | 4952 | if (BITS(inst_cream->inst, 12, 15) == 15) { |
| 4957 | INC_PC(sizeof(ldst_inst)); | 4953 | INC_PC(sizeof(ldst_inst)); |
| 4958 | goto PROFILING; | 4954 | goto DISPATCH; |
| 4959 | } | 4955 | } |
| 4960 | } | 4956 | } |
| 4961 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4957 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -4982,7 +4978,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 4982 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; | 4978 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; |
| 4983 | if (BITS(inst_cream->inst, 12, 15) == 15) { | 4979 | if (BITS(inst_cream->inst, 12, 15) == 15) { |
| 4984 | INC_PC(sizeof(ldst_inst)); | 4980 | INC_PC(sizeof(ldst_inst)); |
| 4985 | goto PROFILING; | 4981 | goto DISPATCH; |
| 4986 | } | 4982 | } |
| 4987 | } | 4983 | } |
| 4988 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 4984 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -5008,7 +5004,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 5008 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; | 5004 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; |
| 5009 | if (BITS(inst_cream->inst, 12, 15) == 15) { | 5005 | if (BITS(inst_cream->inst, 12, 15) == 15) { |
| 5010 | INC_PC(sizeof(ldst_inst)); | 5006 | INC_PC(sizeof(ldst_inst)); |
| 5011 | goto PROFILING; | 5007 | goto DISPATCH; |
| 5012 | } | 5008 | } |
| 5013 | } | 5009 | } |
| 5014 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 5010 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -5033,7 +5029,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 5033 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; | 5029 | cpu->Reg[BITS(inst_cream->inst, 12, 15)] = value; |
| 5034 | if (BITS(inst_cream->inst, 12, 15) == 15) { | 5030 | if (BITS(inst_cream->inst, 12, 15) == 15) { |
| 5035 | INC_PC(sizeof(ldst_inst)); | 5031 | INC_PC(sizeof(ldst_inst)); |
| 5036 | goto PROFILING; | 5032 | goto DISPATCH; |
| 5037 | } | 5033 | } |
| 5038 | } | 5034 | } |
| 5039 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 5035 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -5060,7 +5056,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 5060 | 5056 | ||
| 5061 | if (BITS(inst_cream->inst, 12, 15) == 15) { | 5057 | if (BITS(inst_cream->inst, 12, 15) == 15) { |
| 5062 | INC_PC(sizeof(ldst_inst)); | 5058 | INC_PC(sizeof(ldst_inst)); |
| 5063 | goto PROFILING; | 5059 | goto DISPATCH; |
| 5064 | } | 5060 | } |
| 5065 | } | 5061 | } |
| 5066 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 5062 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -5230,7 +5226,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 5230 | } | 5226 | } |
| 5231 | if (inst_cream->Rd == 15) { | 5227 | if (inst_cream->Rd == 15) { |
| 5232 | INC_PC(sizeof(mla_inst)); | 5228 | INC_PC(sizeof(mla_inst)); |
| 5233 | goto PROFILING; | 5229 | goto DISPATCH; |
| 5234 | } | 5230 | } |
| 5235 | } | 5231 | } |
| 5236 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 5232 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -5262,7 +5258,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 5262 | } | 5258 | } |
| 5263 | if (inst_cream->Rd == 15) { | 5259 | if (inst_cream->Rd == 15) { |
| 5264 | INC_PC(sizeof(mov_inst)); | 5260 | INC_PC(sizeof(mov_inst)); |
| 5265 | goto PROFILING; | 5261 | goto DISPATCH; |
| 5266 | } | 5262 | } |
| 5267 | // return; | 5263 | // return; |
| 5268 | } | 5264 | } |
| @@ -5424,7 +5420,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 5424 | } | 5420 | } |
| 5425 | if (inst_cream->Rd == 15) { | 5421 | if (inst_cream->Rd == 15) { |
| 5426 | INC_PC(sizeof(mul_inst)); | 5422 | INC_PC(sizeof(mul_inst)); |
| 5427 | goto PROFILING; | 5423 | goto DISPATCH; |
| 5428 | } | 5424 | } |
| 5429 | } | 5425 | } |
| 5430 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 5426 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -5453,7 +5449,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 5453 | } | 5449 | } |
| 5454 | if (inst_cream->Rd == 15) { | 5450 | if (inst_cream->Rd == 15) { |
| 5455 | INC_PC(sizeof(mvn_inst)); | 5451 | INC_PC(sizeof(mvn_inst)); |
| 5456 | goto PROFILING; | 5452 | goto DISPATCH; |
| 5457 | } | 5453 | } |
| 5458 | } | 5454 | } |
| 5459 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 5455 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -5485,7 +5481,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 5485 | } | 5481 | } |
| 5486 | if (inst_cream->Rd == 15) { | 5482 | if (inst_cream->Rd == 15) { |
| 5487 | INC_PC(sizeof(orr_inst)); | 5483 | INC_PC(sizeof(orr_inst)); |
| 5488 | goto PROFILING; | 5484 | goto DISPATCH; |
| 5489 | } | 5485 | } |
| 5490 | } | 5486 | } |
| 5491 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 5487 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -5577,7 +5573,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 5577 | } | 5573 | } |
| 5578 | if (inst_cream->Rd == 15) { | 5574 | if (inst_cream->Rd == 15) { |
| 5579 | INC_PC(sizeof(rsb_inst)); | 5575 | INC_PC(sizeof(rsb_inst)); |
| 5580 | goto PROFILING; | 5576 | goto DISPATCH; |
| 5581 | } | 5577 | } |
| 5582 | } | 5578 | } |
| 5583 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 5579 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -5614,7 +5610,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 5614 | } | 5610 | } |
| 5615 | if (inst_cream->Rd == 15) { | 5611 | if (inst_cream->Rd == 15) { |
| 5616 | INC_PC(sizeof(rsc_inst)); | 5612 | INC_PC(sizeof(rsc_inst)); |
| 5617 | goto PROFILING; | 5613 | goto DISPATCH; |
| 5618 | } | 5614 | } |
| 5619 | } | 5615 | } |
| 5620 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 5616 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -5655,7 +5651,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 5655 | } | 5651 | } |
| 5656 | if (inst_cream->Rd == 15) { | 5652 | if (inst_cream->Rd == 15) { |
| 5657 | INC_PC(sizeof(sbc_inst)); | 5653 | INC_PC(sizeof(sbc_inst)); |
| 5658 | goto PROFILING; | 5654 | goto DISPATCH; |
| 5659 | } | 5655 | } |
| 5660 | } | 5656 | } |
| 5661 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 5657 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -6068,7 +6064,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 6068 | } | 6064 | } |
| 6069 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 6065 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| 6070 | //if (BITS(inst_cream->inst, 12, 15) == 15) | 6066 | //if (BITS(inst_cream->inst, 12, 15) == 15) |
| 6071 | // goto PROFILING; | 6067 | // goto DISPATCH; |
| 6072 | INC_PC(sizeof(ldst_inst)); | 6068 | INC_PC(sizeof(ldst_inst)); |
| 6073 | FETCH_INST; | 6069 | FETCH_INST; |
| 6074 | GOTO_NEXT_INST; | 6070 | GOTO_NEXT_INST; |
| @@ -6177,7 +6173,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 6177 | } | 6173 | } |
| 6178 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 6174 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| 6179 | //if (BITS(inst_cream->inst, 12, 15) == 15) | 6175 | //if (BITS(inst_cream->inst, 12, 15) == 15) |
| 6180 | // goto PROFILING; | 6176 | // goto DISPATCH; |
| 6181 | INC_PC(sizeof(ldst_inst)); | 6177 | INC_PC(sizeof(ldst_inst)); |
| 6182 | FETCH_INST; | 6178 | FETCH_INST; |
| 6183 | GOTO_NEXT_INST; | 6179 | GOTO_NEXT_INST; |
| @@ -6227,7 +6223,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 6227 | } | 6223 | } |
| 6228 | if (inst_cream->Rd == 15) { | 6224 | if (inst_cream->Rd == 15) { |
| 6229 | INC_PC(sizeof(sub_inst)); | 6225 | INC_PC(sizeof(sub_inst)); |
| 6230 | goto PROFILING; | 6226 | goto DISPATCH; |
| 6231 | } | 6227 | } |
| 6232 | } | 6228 | } |
| 6233 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 6229 | cpu->Reg[15] += GET_INST_SIZE(cpu); |
| @@ -6451,7 +6447,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 6451 | cpu->Reg[15] = cpu->Reg[15] + 4 + inst_cream->imm; | 6447 | cpu->Reg[15] = cpu->Reg[15] + 4 + inst_cream->imm; |
| 6452 | //DEBUG_LOG(ARM11, " BL_1_THUMB: imm=0x%x, r14=0x%x, r15=0x%x\n", inst_cream->imm, cpu->Reg[14], cpu->Reg[15]); | 6448 | //DEBUG_LOG(ARM11, " BL_1_THUMB: imm=0x%x, r14=0x%x, r15=0x%x\n", inst_cream->imm, cpu->Reg[14], cpu->Reg[15]); |
| 6453 | INC_PC(sizeof(b_2_thumb)); | 6449 | INC_PC(sizeof(b_2_thumb)); |
| 6454 | goto PROFILING; | 6450 | goto DISPATCH; |
| 6455 | } | 6451 | } |
| 6456 | B_COND_THUMB: | 6452 | B_COND_THUMB: |
| 6457 | { | 6453 | { |
| @@ -6463,7 +6459,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 6463 | cpu->Reg[15] += 2; | 6459 | cpu->Reg[15] += 2; |
| 6464 | //DEBUG_LOG(ARM11, " B_COND_THUMB: imm=0x%x, r15=0x%x\n", inst_cream->imm, cpu->Reg[15]); | 6460 | //DEBUG_LOG(ARM11, " B_COND_THUMB: imm=0x%x, r15=0x%x\n", inst_cream->imm, cpu->Reg[15]); |
| 6465 | INC_PC(sizeof(b_cond_thumb)); | 6461 | INC_PC(sizeof(b_cond_thumb)); |
| 6466 | goto PROFILING; | 6462 | goto DISPATCH; |
| 6467 | } | 6463 | } |
| 6468 | BL_1_THUMB: | 6464 | BL_1_THUMB: |
| 6469 | { | 6465 | { |
| @@ -6489,7 +6485,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 6489 | cpu->Reg[14] = tmp; | 6485 | cpu->Reg[14] = tmp; |
| 6490 | //DEBUG_LOG(ARM11, " BL_2_THUMB: imm=0x%x, r14=0x%x, r15=0x%x\n", inst_cream->imm, cpu->Reg[14], cpu->Reg[15]); | 6486 | //DEBUG_LOG(ARM11, " BL_2_THUMB: imm=0x%x, r14=0x%x, r15=0x%x\n", inst_cream->imm, cpu->Reg[14], cpu->Reg[15]); |
| 6491 | INC_PC(sizeof(bl_2_thumb)); | 6487 | INC_PC(sizeof(bl_2_thumb)); |
| 6492 | goto PROFILING; | 6488 | goto DISPATCH; |
| 6493 | } | 6489 | } |
| 6494 | BLX_1_THUMB: | 6490 | BLX_1_THUMB: |
| 6495 | { | 6491 | { |
| @@ -6505,7 +6501,7 @@ unsigned InterpreterMainLoop(ARMul_State* state) | |||
| 6505 | cpu->TFlag = 0; | 6501 | cpu->TFlag = 0; |
| 6506 | //DEBUG_LOG(ARM11, "In BLX_1_THUMB, BLX(1),imm=0x%x,r14=0x%x, r15=0x%x, \n", inst_cream->imm, cpu->Reg[14], cpu->Reg[15]); | 6502 | //DEBUG_LOG(ARM11, "In BLX_1_THUMB, BLX(1),imm=0x%x,r14=0x%x, r15=0x%x, \n", inst_cream->imm, cpu->Reg[14], cpu->Reg[15]); |
| 6507 | INC_PC(sizeof(blx_1_thumb)); | 6503 | INC_PC(sizeof(blx_1_thumb)); |
| 6508 | goto PROFILING; | 6504 | goto DISPATCH; |
| 6509 | } | 6505 | } |
| 6510 | 6506 | ||
| 6511 | UQADD16_INST: | 6507 | UQADD16_INST: |