diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2002-09-28 12:09:27 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2002-09-28 12:09:27 +0000 |
commit | 28165e22cd970f0269c27f31a30c166c9732cfea (patch) | |
tree | 9dfeceaf76350703dcfa91f04a9a3fa96e53beb9 /libffi | |
parent | fb3d26dc12f31470f70812d0abfd135db09ef59a (diff) | |
download | gcc-28165e22cd970f0269c27f31a30c166c9732cfea.zip gcc-28165e22cd970f0269c27f31a30c166c9732cfea.tar.gz gcc-28165e22cd970f0269c27f31a30c166c9732cfea.tar.bz2 |
sysv.S: If we don't have machine/asm.h and the pre-processor has defined...
* src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor
has defined __USER_LABEL_PREFIX__, then use it in CNAME.
(ffi_call_SYSV): Handle soft-float.
From-SVN: r57609
Diffstat (limited to 'libffi')
-rw-r--r-- | libffi/ChangeLog | 6 | ||||
-rw-r--r-- | libffi/src/arm/sysv.S | 15 |
2 files changed, 21 insertions, 0 deletions
diff --git a/libffi/ChangeLog b/libffi/ChangeLog index 3fd628f..365a104 100644 --- a/libffi/ChangeLog +++ b/libffi/ChangeLog @@ -1,3 +1,9 @@ +2002-09-28 Richard Earnshaw <rearnsha@arm.com> + + * src/arm/sysv.S: If we don't have machine/asm.h and the pre-processor + has defined __USER_LABEL_PREFIX__, then use it in CNAME. + (ffi_call_SYSV): Handle soft-float. + 2002-09-27 Bo Thorsen <bo@suse.de> * include/ffi.h.in: Fix multilib x86-64 support. diff --git a/libffi/src/arm/sysv.S b/libffi/src/arm/sysv.S index 84744d7..a494a2f 100644 --- a/libffi/src/arm/sysv.S +++ b/libffi/src/arm/sysv.S @@ -28,6 +28,13 @@ #ifdef HAVE_MACHINE_ASM_H #include <machine/asm.h> #else +#ifdef __USER_LABEL_PREFIX__ +#define CONCAT1(a, b) CONCAT2(a, b) +#define CONCAT2(a, b) a ## b + +/* Use the right prefix for global labels. */ +#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) +#else /* XXX these lose for some platforms, I'm sure. */ #define CNAME(x) x #define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): @@ -96,12 +103,20 @@ ENTRY(ffi_call_SYSV) # return FLOAT cmp a4, #FFI_TYPE_FLOAT +#ifdef __SOFTFP__ + streq a1, [a3] +#else stfeqs f0, [a3] +#endif beq epilogue # return DOUBLE or LONGDOUBLE cmp a4, #FFI_TYPE_DOUBLE +#ifdef __SOFTFP__ + stmeqia a3, {a1, a2} +#else stfeqd f0, [a3] +#endif epilogue: ldmfd sp!, {a1-a4, fp, pc} |