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:
parent
fb3d26dc12
commit
28165e22cd
|
@ -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.
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Reference in New Issue