Darwin/iOS: Improve unified syntax use for LLVM

This commit is contained in:
Zachary Waldowski
2013-12-30 17:48:10 -05:00
parent ba0ea99c82
commit 6eff9ff9e7

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 regs=, cond=, dirn=ia .macro RETLDM regs=, cond=, dirn=ia
@@ -171,7 +156,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}
@@ -228,7 +213,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)
@@ -266,7 +251,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}
@@ -345,7 +330,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}
@@ -433,7 +418,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