diff options
author | Anthony Green <green@moxielogic.com> | 2012-01-23 11:13:18 -0500 |
---|---|---|
committer | Anthony Green <green@moxielogic.com> | 2012-01-23 11:13:18 -0500 |
commit | c365ee7577bef00cb3c2c0b5224147aea04138d8 (patch) | |
tree | 6acd18ecb032650d2284c1757440326f31970828 /src/ia64 | |
parent | f22c38bbd93bcc0c04bf26c3e414556b3177c385 (diff) | |
download | libffi-c365ee7577bef00cb3c2c0b5224147aea04138d8.tar.gz |
Refresh
Diffstat (limited to 'src/ia64')
-rw-r--r-- | src/ia64/ffi.c | 16 |
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: |