diff options
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r-- | arch/mips/kernel/mips-r2-to-r6-emul.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/arch/mips/kernel/mips-r2-to-r6-emul.c b/arch/mips/kernel/mips-r2-to-r6-emul.c index ef2ca28a028b..d8f1cf1ec370 100644 --- a/arch/mips/kernel/mips-r2-to-r6-emul.c +++ b/arch/mips/kernel/mips-r2-to-r6-emul.c | |||
@@ -433,8 +433,8 @@ static int multu_func(struct pt_regs *regs, u32 ir) | |||
433 | rs = regs->regs[MIPSInst_RS(ir)]; | 433 | rs = regs->regs[MIPSInst_RS(ir)]; |
434 | res = (u64)rt * (u64)rs; | 434 | res = (u64)rt * (u64)rs; |
435 | rt = res; | 435 | rt = res; |
436 | regs->lo = (s64)rt; | 436 | regs->lo = (s64)(s32)rt; |
437 | regs->hi = (s64)(res >> 32); | 437 | regs->hi = (s64)(s32)(res >> 32); |
438 | 438 | ||
439 | MIPS_R2_STATS(muls); | 439 | MIPS_R2_STATS(muls); |
440 | 440 | ||
@@ -670,9 +670,9 @@ static int maddu_func(struct pt_regs *regs, u32 ir) | |||
670 | res += ((((s64)rt) << 32) | (u32)rs); | 670 | res += ((((s64)rt) << 32) | (u32)rs); |
671 | 671 | ||
672 | rt = res; | 672 | rt = res; |
673 | regs->lo = (s64)rt; | 673 | regs->lo = (s64)(s32)rt; |
674 | rs = res >> 32; | 674 | rs = res >> 32; |
675 | regs->hi = (s64)rs; | 675 | regs->hi = (s64)(s32)rs; |
676 | 676 | ||
677 | MIPS_R2_STATS(dsps); | 677 | MIPS_R2_STATS(dsps); |
678 | 678 | ||
@@ -728,9 +728,9 @@ static int msubu_func(struct pt_regs *regs, u32 ir) | |||
728 | res = ((((s64)rt) << 32) | (u32)rs) - res; | 728 | res = ((((s64)rt) << 32) | (u32)rs) - res; |
729 | 729 | ||
730 | rt = res; | 730 | rt = res; |
731 | regs->lo = (s64)rt; | 731 | regs->lo = (s64)(s32)rt; |
732 | rs = res >> 32; | 732 | rs = res >> 32; |
733 | regs->hi = (s64)rs; | 733 | regs->hi = (s64)(s32)rs; |
734 | 734 | ||
735 | MIPS_R2_STATS(dsps); | 735 | MIPS_R2_STATS(dsps); |
736 | 736 | ||