backport: aix_closure.S (ffi_closure_ASM): Adjust for Darwin64 change to return value of ffi_closure_helper_DARWIN and...
2012-03-22 David Edelsohn <dje.gcc@gmail.com> Backport from mainline: 2012-03-09 David Edelsohn <dje.gcc@gmail.com> * src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64 change to return value of ffi_closure_helper_DARWIN and load type from return type. From Tom Honermann <tom.honermann@oracle.com>: * src/powerpc/aix.S: Declare .ffi_prep_args. Insert nops after branch instructions. * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN. From-SVN: r185706
This commit is contained in:
parent
1d37e85568
commit
7e43d48401
|
@ -1,3 +1,17 @@
|
|||
2012-03-22 David Edelsohn <dje.gcc@gmail.com>
|
||||
|
||||
Backport from mainline:
|
||||
2012-03-09 David Edelsohn <dje.gcc@gmail.com>
|
||||
|
||||
* src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64
|
||||
change to return value of ffi_closure_helper_DARWIN and load type
|
||||
from return type.
|
||||
|
||||
From Tom Honermann <tom.honermann@oracle.com>:
|
||||
* src/powerpc/aix.S: Declare .ffi_prep_args. Insert nops after
|
||||
branch instructions.
|
||||
* src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
|
||||
|
||||
2012-03-22 Release Manager
|
||||
|
||||
* GCC 4.7.0 released.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* -----------------------------------------------------------------------
|
||||
aix.S - Copyright (c) 2002,2009 Free Software Foundation, Inc.
|
||||
aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
|
||||
based on darwin.S by John Hornkvist
|
||||
|
||||
PowerPC Assembly glue.
|
||||
|
@ -79,6 +79,8 @@
|
|||
.set f20,20
|
||||
.set f21,21
|
||||
|
||||
.extern .ffi_prep_args
|
||||
|
||||
#define LIBFFI_ASM
|
||||
#include <fficonfig.h>
|
||||
#include <ffi.h>
|
||||
|
@ -125,6 +127,7 @@ ffi_call_AIX:
|
|||
/* Call ffi_prep_args. */
|
||||
mr r4, r1
|
||||
bl .ffi_prep_args
|
||||
nop
|
||||
|
||||
/* Now do the call. */
|
||||
ld r0, 0(r29)
|
||||
|
@ -226,6 +229,7 @@ L(float_return_value):
|
|||
/* Call ffi_prep_args. */
|
||||
mr r4, r1
|
||||
bl .ffi_prep_args
|
||||
nop
|
||||
|
||||
/* Now do the call. */
|
||||
lwz r0, 0(r29)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue