diff options
| author | 2015-07-21 03:51:36 -0400 | |
|---|---|---|
| committer | 2015-07-21 03:56:29 -0400 | |
| commit | c2689b8c2c6f0ac023eddb25d98da6bc1fa95205 (patch) | |
| tree | 4d5380eb7b032f0090370ea34556558e59eb5742 /src/core/arm/dyncom | |
| parent | Merge pull request #959 from Subv/home (diff) | |
| download | yuzu-c2689b8c2c6f0ac023eddb25d98da6bc1fa95205.tar.gz yuzu-c2689b8c2c6f0ac023eddb25d98da6bc1fa95205.tar.xz yuzu-c2689b8c2c6f0ac023eddb25d98da6bc1fa95205.zip | |
dyncom: Pass SVC immediates directly.
Previously it would just re-read the already decoded instruction and extract the immediate value.
Diffstat (limited to 'src/core/arm/dyncom')
| -rw-r--r-- | src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp index e40f3fa93..785f39566 100644 --- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp +++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp | |||
| @@ -6248,7 +6248,8 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) { | |||
| 6248 | SWI_INST: | 6248 | SWI_INST: |
| 6249 | { | 6249 | { |
| 6250 | if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) { | 6250 | if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) { |
| 6251 | SVC::CallSVC(Memory::Read32(cpu->Reg[15])); | 6251 | swi_inst* const inst_cream = (swi_inst*)inst_base->component; |
| 6252 | SVC::CallSVC(inst_cream->num & 0xFFFF); | ||
| 6252 | } | 6253 | } |
| 6253 | 6254 | ||
| 6254 | cpu->Reg[15] += GET_INST_SIZE(cpu); | 6255 | cpu->Reg[15] += GET_INST_SIZE(cpu); |