OSDN Git Service

2012-03-22 David Edelsohn <dje.gcc@gmail.com>
[pf3gnuchains/gcc-fork.git] / libffi / src / powerpc / aix_closure.S
index 5c74448..aabd3c3 100644 (file)
@@ -79,6 +79,8 @@
        .set f20,20
        .set f21,21
 
+       .extern .ffi_closure_helper_DARWIN
+
 #define LIBFFI_ASM
 #define JUMPTARGET(name) name
 #define L(x) x
@@ -165,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 */
@@ -337,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