Commit 7054d980 by Alan Modra Committed by Alan Modra

linux64_closure.S: Add new ABI support.

	* src/powerpc/linux64_closure.S: Add new ABI support.
	* src/powerpc/linux64.S: Likewise.

From-SVN: r193015
parent 6c10ab65
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> 2012-09-14 David Edelsohn <dje.gcc@gmail.com>
* configure: Regenerated. * configure: Regenerated.
......
...@@ -30,16 +30,25 @@ ...@@ -30,16 +30,25 @@
#include <ffi.h> #include <ffi.h>
#ifdef __powerpc64__ #ifdef __powerpc64__
.hidden ffi_call_LINUX64, .ffi_call_LINUX64 .hidden ffi_call_LINUX64
.globl ffi_call_LINUX64, .ffi_call_LINUX64 .globl ffi_call_LINUX64
.section ".opd","aw" .section ".opd","aw"
.align 3 .align 3
ffi_call_LINUX64: 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 .quad .ffi_call_LINUX64,.TOC.@tocbase,0
.size ffi_call_LINUX64,24 .size ffi_call_LINUX64,24
.type .ffi_call_LINUX64,@function .type .ffi_call_LINUX64,@function
.text .text
.ffi_call_LINUX64: .ffi_call_LINUX64:
#endif
.LFB1: .LFB1:
mflr %r0 mflr %r0
std %r28, -32(%r1) std %r28, -32(%r1)
...@@ -58,7 +67,11 @@ ffi_call_LINUX64: ...@@ -58,7 +67,11 @@ ffi_call_LINUX64:
/* Call ffi_prep_args64. */ /* Call ffi_prep_args64. */
mr %r4, %r1 mr %r4, %r1
#ifdef _CALL_LINUX
bl ffi_prep_args64
#else
bl .ffi_prep_args64 bl .ffi_prep_args64
#endif
ld %r0, 0(%r29) ld %r0, 0(%r29)
ld %r2, 8(%r29) ld %r2, 8(%r29)
...@@ -137,7 +150,11 @@ ffi_call_LINUX64: ...@@ -137,7 +150,11 @@ ffi_call_LINUX64:
.LFE1: .LFE1:
.long 0 .long 0
.byte 0,12,0,1,128,4,0,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 .size .ffi_call_LINUX64,.-.ffi_call_LINUX64
#endif
.section .eh_frame,EH_FRAME_FLAGS,@progbits .section .eh_frame,EH_FRAME_FLAGS,@progbits
.Lframe1: .Lframe1:
......
...@@ -32,16 +32,24 @@ ...@@ -32,16 +32,24 @@
#ifdef __powerpc64__ #ifdef __powerpc64__
FFI_HIDDEN (ffi_closure_LINUX64) FFI_HIDDEN (ffi_closure_LINUX64)
FFI_HIDDEN (.ffi_closure_LINUX64) .globl ffi_closure_LINUX64
.globl ffi_closure_LINUX64, .ffi_closure_LINUX64
.section ".opd","aw" .section ".opd","aw"
.align 3 .align 3
ffi_closure_LINUX64: 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 .quad .ffi_closure_LINUX64,.TOC.@tocbase,0
.size ffi_closure_LINUX64,24 .size ffi_closure_LINUX64,24
.type .ffi_closure_LINUX64,@function .type .ffi_closure_LINUX64,@function
.text .text
.ffi_closure_LINUX64: .ffi_closure_LINUX64:
#endif
.LFB1: .LFB1:
# save general regs into parm save area # save general regs into parm save area
std %r3, 48(%r1) std %r3, 48(%r1)
...@@ -91,7 +99,11 @@ ffi_closure_LINUX64: ...@@ -91,7 +99,11 @@ ffi_closure_LINUX64:
addi %r6, %r1, 128 addi %r6, %r1, 128
# make the call # make the call
#ifdef _CALL_LINUX
bl ffi_closure_helper_LINUX64
#else
bl .ffi_closure_helper_LINUX64 bl .ffi_closure_helper_LINUX64
#endif
.Lret: .Lret:
# now r3 contains the return type # now r3 contains the return type
...@@ -194,7 +206,11 @@ ffi_closure_LINUX64: ...@@ -194,7 +206,11 @@ ffi_closure_LINUX64:
.LFE1: .LFE1:
.long 0 .long 0
.byte 0,12,0,1,128,0,0,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 .size .ffi_closure_LINUX64,.-.ffi_closure_LINUX64
#endif
.section .eh_frame,EH_FRAME_FLAGS,@progbits .section .eh_frame,EH_FRAME_FLAGS,@progbits
.Lframe1: .Lframe1:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment