]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* src/powerpc/linux64_closure.S: Add new ABI support.
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Oct 2012 03:45:34 +0000 (03:45 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Oct 2012 03:45:34 +0000 (03:45 +0000)
* src/powerpc/linux64.S: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193015 138bc75d-0d04-0410-961f-82ee72b054a4

libffi/ChangeLog
libffi/src/powerpc/linux64.S
libffi/src/powerpc/linux64_closure.S

index 9d31a06493064235a640155e964e94f689d2aeb0..56d772542996e15d513b8e75d41986f63338249f 100644 (file)
@@ -1,3 +1,8 @@
+2012-10-31  Alan Modra  <amodra@gmail.com>
+
+       * src/powerpc/linux64_closure.S: Add new ABI support.
+       * src/powerpc/linux64.S: Likewise.
+
 2012-09-14  David Edelsohn  <dje.gcc@gmail.com>
 
        * configure: Regenerated.
index 57b56cbb26618bbe9e018fbd36bf9a69aa63d2cc..f28da8120b7841ed3545fa0b09e1d4a849e3c691 100644 (file)
 #include <ffi.h>
 
 #ifdef __powerpc64__
-       .hidden ffi_call_LINUX64, .ffi_call_LINUX64
-       .globl  ffi_call_LINUX64, .ffi_call_LINUX64
+       .hidden ffi_call_LINUX64
+       .globl  ffi_call_LINUX64
        .section        ".opd","aw"
        .align  3
 ffi_call_LINUX64:
+#ifdef _CALL_LINUX
+       .quad   .L.ffi_call_LINUX64,.TOC.@tocbase,0
+       .type   ffi_call_LINUX64,@function
+       .text
+.L.ffi_call_LINUX64:
+#else
+       .hidden .ffi_call_LINUX64
+       .globl  .ffi_call_LINUX64
        .quad   .ffi_call_LINUX64,.TOC.@tocbase,0
        .size   ffi_call_LINUX64,24
        .type   .ffi_call_LINUX64,@function
        .text
 .ffi_call_LINUX64:
+#endif
 .LFB1:
        mflr    %r0
        std     %r28, -32(%r1)
@@ -58,7 +67,11 @@ ffi_call_LINUX64:
 
        /* Call ffi_prep_args64.  */
        mr      %r4, %r1
+#ifdef _CALL_LINUX
+       bl      ffi_prep_args64
+#else
        bl      .ffi_prep_args64
+#endif
 
        ld      %r0, 0(%r29)
        ld      %r2, 8(%r29)
@@ -137,7 +150,11 @@ ffi_call_LINUX64:
 .LFE1:
        .long   0
        .byte   0,12,0,1,128,4,0,0
+#ifdef _CALL_LINUX
+       .size   ffi_call_LINUX64,.-.L.ffi_call_LINUX64
+#else
        .size   .ffi_call_LINUX64,.-.ffi_call_LINUX64
+#endif
 
        .section        .eh_frame,EH_FRAME_FLAGS,@progbits
 .Lframe1:
index f7aa2c98efcd0d0aadb5c023899ab838a93550d0..b1e12197a2b2c5fe439f020dc63cfb57d72fc82b 100644 (file)
 
 #ifdef __powerpc64__
        FFI_HIDDEN (ffi_closure_LINUX64)
-       FFI_HIDDEN (.ffi_closure_LINUX64)
-       .globl  ffi_closure_LINUX64, .ffi_closure_LINUX64
+       .globl  ffi_closure_LINUX64
        .section        ".opd","aw"
        .align  3
 ffi_closure_LINUX64:
+#ifdef _CALL_LINUX
+       .quad   .L.ffi_closure_LINUX64,.TOC.@tocbase,0
+       .type   ffi_closure_LINUX64,@function
+       .text
+.L.ffi_closure_LINUX64:
+#else
+       FFI_HIDDEN (.ffi_closure_LINUX64)
+       .globl  .ffi_closure_LINUX64
        .quad   .ffi_closure_LINUX64,.TOC.@tocbase,0
        .size   ffi_closure_LINUX64,24
        .type   .ffi_closure_LINUX64,@function
        .text
 .ffi_closure_LINUX64:
+#endif
 .LFB1:
        # save general regs into parm save area
        std     %r3, 48(%r1)
@@ -91,7 +99,11 @@ ffi_closure_LINUX64:
        addi %r6, %r1, 128
 
        # make the call
+#ifdef _CALL_LINUX
+       bl ffi_closure_helper_LINUX64
+#else
        bl .ffi_closure_helper_LINUX64
+#endif
 .Lret:
 
        # now r3 contains the return type
@@ -194,7 +206,11 @@ ffi_closure_LINUX64:
 .LFE1:
        .long   0
        .byte   0,12,0,1,128,0,0,0
+#ifdef _CALL_LINUX
+       .size   ffi_closure_LINUX64,.-.L.ffi_closure_LINUX64
+#else
        .size   .ffi_closure_LINUX64,.-.ffi_closure_LINUX64
+#endif
 
        .section        .eh_frame,EH_FRAME_FLAGS,@progbits
 .Lframe1: