diff mbox

[libffi,Darwin,PPC64] PR29152 (Darwin64 implementation), PR42387 (ppc va faults).

Message ID CAGWvnykAUxRxKQ418MhZTG+YsCJixnvnfOmDDX_QSHce4Vmywg@mail.gmail.com
State New
Headers show

Commit Message

David Edelsohn March 8, 2012, 1:52 a.m. UTC
This patch applies the same logic to aix_closure.S that was modified
in darwin_closure.S, returning from 100% failure to:

                === libffi Summary ===

# of expected passes            1638
# of unexpected failures        13
# of unsupported tests          55

            * src/powerpc/aix_closure.S (ffi_closure_ASM): Load type
from ffi_type return type.
diff mbox

Patch

diff --git a/src/powerpc/aix_closure.S b/src/powerpc/aix_closure.S
index c906017..7c319a3 100644
--- a/src/powerpc/aix_closure.S
+++ b/src/powerpc/aix_closure.S
@@ -168,6 +168,7 @@  ffi_closure_ASM:
        /* look up the proper starting point in table  */
        /* by using return type as offset */
        ld      r4, LC..60(2)   /* get address of jump table */
+       lhz     r3, 10(r3)
        sldi    r3, r3, 4       /* now multiply return type by 16 */
        ld      r0, 240+16(r1)  /* load return address */
        add     r3, r3, r4      /* add contents of table to table address */
@@ -340,6 +341,7 @@  L..finish:
        /* look up the proper starting point in table  */
        /* by using return type as offset */
        lwz     r4, LC..60(2)   /* get address of jump table */
+       lhz     r3, 6(r3)
        slwi    r3, r3, 4       /* now multiply return type by 4 */
        lwz     r0, 176+8(r1)   /* load return address */
        add     r3, r3, r4      /* add contents of table to table address */