From dcf2b9d94095407b6779f13c7b63a870d56ea10b Mon Sep 17 00:00:00 2001 From: Heiher Date: Tue, 2 Jun 2015 18:49:00 -0400 Subject: [PATCH] Bug 1170859- MIPS64: Fix copy u32 type arg to argument register. r=froydnj --- xpcom/reflect/xptcall/md/unix/xptcinvoke_mips64.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xpcom/reflect/xptcall/md/unix/xptcinvoke_mips64.cpp b/xpcom/reflect/xptcall/md/unix/xptcinvoke_mips64.cpp index 48cc5ca2950e..1dd54f96f560 100644 --- a/xpcom/reflect/xptcall/md/unix/xptcinvoke_mips64.cpp +++ b/xpcom/reflect/xptcall/md/unix/xptcinvoke_mips64.cpp @@ -77,7 +77,9 @@ invoke_copy_to_stack(uint64_t* d, uint32_t paramCount, break; case nsXPTType::T_U32: if (i < N_ARG_REGS) - regs[i] = s->val.u32; + // 32-bit values need to be sign-extended + // in register, so use the signed value. + regs[i] = s->val.i32; else *d++ = s->val.u32; break;