mirror of git://gcc.gnu.org/git/gcc.git
linux64_closure.S: Add new ABI support.
* src/powerpc/linux64_closure.S: Add new ABI support. * src/powerpc/linux64.S: Likewise. From-SVN: r193015
This commit is contained in:
parent
6c10ab6513
commit
7054d980c1
|
|
@ -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>
|
2012-09-14 David Edelsohn <dje.gcc@gmail.com>
|
||||||
|
|
||||||
* configure: Regenerated.
|
* configure: Regenerated.
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
||||||
/* 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:
|
||||||
.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 @@
|
||||||
|
|
||||||
#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:
|
||||||
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:
|
||||||
.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:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue