summaryrefslogtreecommitdiff
path: root/src/aarch64
diff options
context:
space:
mode:
Diffstat (limited to 'src/aarch64')
-rw-r--r--src/aarch64/ffi.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/aarch64/ffi.c b/src/aarch64/ffi.c
index f421536..76d2938 100644
--- a/src/aarch64/ffi.c
+++ b/src/aarch64/ffi.c
@@ -1027,9 +1027,18 @@ ffi_closure_SYSV_inner (ffi_cif *cif,
{
/* Replace Composite type of size greater than 16 with a
pointer. */
+#ifdef __ILP32__
+ UINT64 avalue_tmp;
+ memcpy (&avalue_tmp,
+ allocate_int_to_reg_or_stack (context, &state,
+ stack, sizeof (void *)),
+ sizeof (UINT64));
+ avalue[i] = (void *)(UINT32)avalue_tmp;
+#else
avalue[i] = *(void **)
allocate_int_to_reg_or_stack (context, &state, stack,
sizeof (void *));
+#endif
}
else
{