summaryrefslogtreecommitdiffstats
path: root/xpcom/reflect
diff options
context:
space:
mode:
Diffstat (limited to 'xpcom/reflect')
-rw-r--r--xpcom/reflect/xptcall/md/unix/xptcinvoke_loongarch64.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/xpcom/reflect/xptcall/md/unix/xptcinvoke_loongarch64.cpp b/xpcom/reflect/xptcall/md/unix/xptcinvoke_loongarch64.cpp
index 61bb7b2efd..e73dd023cb 100644
--- a/xpcom/reflect/xptcall/md/unix/xptcinvoke_loongarch64.cpp
+++ b/xpcom/reflect/xptcall/md/unix/xptcinvoke_loongarch64.cpp
@@ -44,7 +44,9 @@ extern "C" void invoke_copy_to_stack(uint64_t* gpregs, double* fpregs,
value = s->val.u16;
break;
case nsXPTType::T_U32:
- value = s->val.u32;
+ // 32-bit values need to be sign-extended in 64-bit registers,
+ // so use the signed value here.
+ value = s->val.i32;
break;
case nsXPTType::T_U64:
value = s->val.u64;