diff options
author | David Edelsohn <dje@gcc.gnu.org> | 2012-03-09 14:51:54 -0500 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2012-03-09 14:51:54 -0500 |
commit | 935a74eea21a6f4a7d8eec67de92fb3325181279 (patch) | |
tree | 53803eed9247f545eaea6677e149e3bb42ba114e /libffi/src | |
parent | f09805bbc5966723ef1922f8714d1b04931ab9d9 (diff) |
aix_closure.S (ffi_closure_ASM): Adjust for Darwin64 change to return value of ffi_closure_helper_DARWIN and...
* src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64
change to return value of ffi_closure_helper_DARWIN and load type
from return type.
From-SVN: r185152
Diffstat (limited to 'libffi/src')
-rw-r--r-- | libffi/src/powerpc/aix_closure.S | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libffi/src/powerpc/aix_closure.S b/libffi/src/powerpc/aix_closure.S index c906017c459..aabd3c3c1ee 100644 --- a/libffi/src/powerpc/aix_closure.S +++ b/libffi/src/powerpc/aix_closure.S @@ -167,6 +167,7 @@ ffi_closure_ASM: /* look up the proper starting point in table */ /* by using return type as offset */ + lhz r3, 10(r3) /* load type from return type */ ld r4, LC..60(2) /* get address of jump table */ sldi r3, r3, 4 /* now multiply return type by 16 */ ld r0, 240+16(r1) /* load return address */ @@ -339,8 +340,9 @@ L..finish: /* look up the proper starting point in table */ /* by using return type as offset */ + lhz r3, 6(r3) /* load type from return type */ lwz r4, LC..60(2) /* get address of jump table */ - slwi r3, r3, 4 /* now multiply return type by 4 */ + slwi r3, r3, 4 /* now multiply return type by 16 */ lwz r0, 176+8(r1) /* load return address */ add r3, r3, r4 /* add contents of table to table address */ mtctr r3 |