]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - arch/mips/kernel/mips-r2-to-r6-emul.c
Merge branches 'for-4.11/upstream-fixes', 'for-4.12/accutouch', 'for-4.12/cp2112...
[mirror_ubuntu-artful-kernel.git] / arch / mips / kernel / mips-r2-to-r6-emul.c
index bd09853aecdfa1e567717cc35a9d19e786468391..d8f1cf1ec3703ad56fcea2ac96a0c5c487ccdd67 100644 (file)
@@ -29,7 +29,7 @@
 #include <asm/local.h>
 #include <asm/mipsregs.h>
 #include <asm/ptrace.h>
-#include <asm/uaccess.h>
+#include <linux/uaccess.h>
 
 #ifdef CONFIG_64BIT
 #define ADDIU  "daddiu "
@@ -433,8 +433,8 @@ static int multu_func(struct pt_regs *regs, u32 ir)
        rs = regs->regs[MIPSInst_RS(ir)];
        res = (u64)rt * (u64)rs;
        rt = res;
-       regs->lo = (s64)rt;
-       regs->hi = (s64)(res >> 32);
+       regs->lo = (s64)(s32)rt;
+       regs->hi = (s64)(s32)(res >> 32);
 
        MIPS_R2_STATS(muls);
 
@@ -670,9 +670,9 @@ static int maddu_func(struct pt_regs *regs, u32 ir)
        res += ((((s64)rt) << 32) | (u32)rs);
 
        rt = res;
-       regs->lo = (s64)rt;
+       regs->lo = (s64)(s32)rt;
        rs = res >> 32;
-       regs->hi = (s64)rs;
+       regs->hi = (s64)(s32)rs;
 
        MIPS_R2_STATS(dsps);
 
@@ -728,9 +728,9 @@ static int msubu_func(struct pt_regs *regs, u32 ir)
        res = ((((s64)rt) << 32) | (u32)rs) - res;
 
        rt = res;
-       regs->lo = (s64)rt;
+       regs->lo = (s64)(s32)rt;
        rs = res >> 32;
-       regs->hi = (s64)rs;
+       regs->hi = (s64)(s32)rs;
 
        MIPS_R2_STATS(dsps);