diff options
author | rearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-09-28 12:09:27 +0000 |
---|---|---|
committer | rearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-09-28 12:09:27 +0000 |
commit | d13886be006138cdcd31629b5c48ac7caba3eacf (patch) | |
tree | 9dfeceaf76350703dcfa91f04a9a3fa96e53beb9 /libffi/src | |
parent | ba891f0ea43423416baa2ce58d4878df5833584d (diff) | |
download | gcc-d13886be006138cdcd31629b5c48ac7caba3eacf.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57609 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libffi/src')
-rw-r--r-- | libffi/src/arm/sysv.S | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libffi/src/arm/sysv.S b/libffi/src/arm/sysv.S index 84744d77562..a494a2ffebf 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} |