Darwin/iOS: Improve unified syntax use for LLVM
authorZachary Waldowski <zach@waldowski.me>
Mon, 30 Dec 2013 22:48:10 +0000 (17:48 -0500)
committerZachary Waldowski <zach@waldowski.me>
Wed, 5 Feb 2014 19:28:58 +0000 (14:28 -0500)
src/arm/sysv.S

index 454dfc9422b501f08d85ee5153a636add108a886..595ea3397a15c60cb00eb9b4b8c61bbb7b8f4ec2 100644 (file)
 #define UNWIND @
 #endif 
 
-       
+.syntax unified
+
 #if defined(__thumb__) && !defined(__THUMB_INTERWORK__)
-.macro ARM_FUNC_START name
-       .text
-       .align 0
-       .thumb
-       .thumb_func
-#ifdef __APPLE__
-       ENTRY($0)
+#define ARM_FUNC_START(name) \
+       .text; \
+       .align 2; \
+       .thumb; \
+       .thumb_func; \
+       ENTRY(name); \
+       bx pc; \
+       nop; \
+       .arm; \
+       UNWIND .fnstart; \
+_L__##name:
 #else
-       ENTRY(\name)
-#endif
-       bx      pc
-       nop
-       .arm
+#define ARM_FUNC_START(name) \
+       .text; \
+       .align 2; \
+       .arm; \
+       ENTRY(name); \
        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
 
 .macro RETLDM  regs=, cond=, dirn=ia
@@ -171,7 +156,7 @@ _L__\name:
        @ sp+0: ecif.rvalue
 
        @ This assumes we are using gas.
-ARM_FUNC_START ffi_call_SYSV
+ARM_FUNC_START(ffi_call_SYSV)
        @ Save registers
         stmfd  sp!, {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__)
        cmpne   r3, #FFI_TYPE_DOUBLE
 #endif
-       stmeqia r2, {r0, r1}
+       stmiaeq r2, {r0, r1}
 
 #if !defined(__SOFTFP__) && !defined(__ARM_EABI__)
        beq     LSYM(Lepilogue)
@@ -266,7 +251,7 @@ LSYM(Lepilogue):
             void *args;
 */
 
-ARM_FUNC_START ffi_closure_SYSV
+ARM_FUNC_START(ffi_closure_SYSV)
        UNWIND .pad #16
        add     ip, sp, #16
        stmfd   sp!, {ip, lr}
@@ -345,7 +330,7 @@ ARM_FUNC_START ffi_closure_SYSV
        @ r3:   fig->flags
        @ sp+0: ecif.rvalue
 
-ARM_FUNC_START ffi_call_VFP
+ARM_FUNC_START(ffi_call_VFP)
        @ Save registers
         stmfd  sp!, {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)
 
 
-ARM_FUNC_START ffi_closure_VFP
+ARM_FUNC_START(ffi_closure_VFP)
        fstmfdd sp!, {d0-d7}
        @ r0-r3, then d0-d7
        UNWIND .pad #80