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
This commit is contained in:
Richard Earnshaw 2002-09-28 12:09:27 +00:00 committed by Richard Earnshaw
parent fb3d26dc12
commit 28165e22cd
2 changed files with 21 additions and 0 deletions

View File

@ -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.

View File

@ -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}