Darwin/iOS: More unified syntax support w/ Clang.

Signed-off-by: Zachary Waldowski <zwaldowski@gmail.com>
This commit is contained in:
Zachary Waldowski
2012-04-24 11:16:20 -04:00
parent c713a55379
commit 953b6f14c6

View File

@@ -109,42 +109,27 @@
#define UNWIND @ #define UNWIND @
#endif #endif
.syntax unified
#if defined(__thumb__) && !defined(__THUMB_INTERWORK__) #if defined(__thumb__) && !defined(__THUMB_INTERWORK__)
.macro ARM_FUNC_START name #define ARM_FUNC_START(name) \
.text .text; \
.align 0 .align 2; \
.thumb .thumb; \
.thumb_func .thumb_func; \
#ifdef __APPLE__ ENTRY(name); \
ENTRY($0) bx pc; \
nop; \
.arm; \
UNWIND .fnstart; \
_L__##name:
#else #else
ENTRY(\name) #define ARM_FUNC_START(name) \
#endif .text; \
bx pc .align 2; \
nop .arm; \
.arm ENTRY(name); \
UNWIND .fnstart UNWIND .fnstart
/* A hook to tell gdb that we've switched to ARM mode. Also used to call
directly from other local arm routines. */
#ifdef __APPLE__
_L__$0:
#else
_L__\name:
#endif
.endm
#else
.macro ARM_FUNC_START name
.text
.align 0
.arm
#ifdef __APPLE__
ENTRY($0)
#else
ENTRY(\name)
#endif
UNWIND .fnstart
.endm
#endif #endif
.macro RETLDM .macro RETLDM
@@ -163,7 +148,7 @@ _L__\name:
@ sp+0: ecif.rvalue @ sp+0: ecif.rvalue
@ This assumes we are using gas. @ This assumes we are using gas.
ARM_FUNC_START ffi_call_SYSV ARM_FUNC_START(ffi_call_SYSV)
@ Save registers @ Save registers
stmfd sp!, {r0-r3, fp, lr} stmfd sp!, {r0-r3, fp, lr}
UNWIND .save {r0-r3, fp, lr} UNWIND .save {r0-r3, fp, lr}
@@ -220,7 +205,7 @@ ARM_FUNC_START ffi_call_SYSV
#if defined(__SOFTFP__) || defined(__ARM_EABI__) #if defined(__SOFTFP__) || defined(__ARM_EABI__)
cmpne r3, #FFI_TYPE_DOUBLE cmpne r3, #FFI_TYPE_DOUBLE
#endif #endif
stmeqia r2, {r0, r1} stmiaeq r2, {r0, r1}
#if !defined(__SOFTFP__) && !defined(__ARM_EABI__) #if !defined(__SOFTFP__) && !defined(__ARM_EABI__)
beq LSYM(Lepilogue) beq LSYM(Lepilogue)
@@ -258,7 +243,7 @@ LSYM(Lepilogue):
void *args; void *args;
*/ */
ARM_FUNC_START ffi_closure_SYSV ARM_FUNC_START(ffi_closure_SYSV)
UNWIND .pad #16 UNWIND .pad #16
add ip, sp, #16 add ip, sp, #16
stmfd sp!, {ip, lr} stmfd sp!, {ip, lr}
@@ -337,7 +322,7 @@ ARM_FUNC_START ffi_closure_SYSV
@ r3: fig->flags @ r3: fig->flags
@ sp+0: ecif.rvalue @ sp+0: ecif.rvalue
ARM_FUNC_START ffi_call_VFP ARM_FUNC_START(ffi_call_VFP)
@ Save registers @ Save registers
stmfd sp!, {r0-r3, fp, lr} stmfd sp!, {r0-r3, fp, lr}
UNWIND .save {r0-r3, fp, lr} UNWIND .save {r0-r3, fp, lr}
@@ -425,7 +410,7 @@ LSYM(Lepilogue_vfp):
.size CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP) .size CNAME(ffi_call_VFP),.ffi_call_VFP_end-CNAME(ffi_call_VFP)
ARM_FUNC_START ffi_closure_VFP ARM_FUNC_START(ffi_closure_VFP)
fstmfdd sp!, {d0-d7} fstmfdd sp!, {d0-d7}
@ r0-r3, then d0-d7 @ r0-r3, then d0-d7
UNWIND .pad #80 UNWIND .pad #80