diff options
Diffstat (limited to 'xpcom/reflect')
-rw-r--r-- | xpcom/reflect/xptcall/md/unix/xptcinvoke_loongarch64.cpp | 4 |
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; |