diff options
| author | 2015-01-08 11:00:04 -0500 | |
|---|---|---|
| committer | 2015-01-08 11:09:21 -0500 | |
| commit | 1cef6e92d5e2b66aa7b01fd6f7ec0e9be6515446 (patch) | |
| tree | b50a9ac668b56887d2c6931e8f0fa07d57c699bd /src | |
| parent | Merge pull request #442 from lioncash/smul (diff) | |
| download | yuzu-1cef6e92d5e2b66aa7b01fd6f7ec0e9be6515446.tar.gz yuzu-1cef6e92d5e2b66aa7b01fd6f7ec0e9be6515446.tar.xz yuzu-1cef6e92d5e2b66aa7b01fd6f7ec0e9be6515446.zip | |
dyncom: Fix UMAAL
These need to be done as a 64-bit operation.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp index 7c710ccde..e3ca02e98 100644 --- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp +++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp | |||
| @@ -6696,10 +6696,10 @@ unsigned InterpreterMainLoop(ARMul_State* state) { | |||
| 6696 | { | 6696 | { |
| 6697 | if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) { | 6697 | if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) { |
| 6698 | umaal_inst* const inst_cream = (umaal_inst*)inst_base->component; | 6698 | umaal_inst* const inst_cream = (umaal_inst*)inst_base->component; |
| 6699 | const u32 rm = RM; | 6699 | const u64 rm = RM; |
| 6700 | const u32 rn = RN; | 6700 | const u64 rn = RN; |
| 6701 | const u32 rd_lo = RDLO; | 6701 | const u64 rd_lo = RDLO; |
| 6702 | const u32 rd_hi = RDHI; | 6702 | const u64 rd_hi = RDHI; |
| 6703 | const u64 result = (rm * rn) + rd_lo + rd_hi; | 6703 | const u64 result = (rm * rn) + rd_lo + rd_hi; |
| 6704 | 6704 | ||
| 6705 | RDLO = (result & 0xFFFFFFFF); | 6705 | RDLO = (result & 0xFFFFFFFF); |