summaryrefslogtreecommitdiff
path: root/src/ia64
diff options
context:
space:
mode:
authorAnthony Green <green@moxielogic.com>2012-01-23 11:13:18 -0500
committerAnthony Green <green@moxielogic.com>2012-01-23 11:13:18 -0500
commitc365ee7577bef00cb3c2c0b5224147aea04138d8 (patch)
tree6acd18ecb032650d2284c1757440326f31970828 /src/ia64
parentf22c38bbd93bcc0c04bf26c3e414556b3177c385 (diff)
downloadlibffi-c365ee7577bef00cb3c2c0b5224147aea04138d8.tar.gz
Refresh
Diffstat (limited to 'src/ia64')
-rw-r--r--src/ia64/ffi.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/ia64/ffi.c b/src/ia64/ffi.c
index 60120ed..9533ef6 100644
--- a/src/ia64/ffi.c
+++ b/src/ia64/ffi.c
@@ -1,8 +1,8 @@
/* -----------------------------------------------------------------------
- ffi.c - Copyright (c) 2011 Anthony Green
- Copyright (c) 2000 Hewlett Packard Company
- Copyright (c) 1998, 2007, 2008 Red Hat, Inc.
-
+ ffi.c - Copyright (c) 1998, 2007, 2008, 2012 Red Hat, Inc.
+ Copyright (c) 2000 Hewlett Packard Company
+ Copyright (c) 2011 Anthony Green
+
IA64 Foreign Function Interface
Permission is hereby granted, free of charge, to any person obtaining
@@ -325,13 +325,17 @@ ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
case FFI_TYPE_FLOAT:
if (gpcount < 8 && fpcount < 8)
stf_spill (&stack->fp_regs[fpcount++], *(float *)avalue[i]);
- stack->gp_regs[gpcount++] = *(UINT32 *)avalue[i];
+ {
+ UINT32 tmp;
+ memcpy (&tmp, avalue[i], sizeof (UINT32));
+ stack->gp_regs[gpcount++] = tmp;
+ }
break;
case FFI_TYPE_DOUBLE:
if (gpcount < 8 && fpcount < 8)
stf_spill (&stack->fp_regs[fpcount++], *(double *)avalue[i]);
- stack->gp_regs[gpcount++] = *(UINT64 *)avalue[i];
+ memcpy (&stack->gp_regs[gpcount++], avalue[i], sizeof (UINT64));
break;
case FFI_TYPE_LONGDOUBLE: