[PATCH] [compiler-rt: Builtins] Fix the incompatible assembly in ARM builtins library.
Sumanth Gundapaneni
sgundapa at codeaurora.org
Mon Jul 21 21:32:02 PDT 2014
I split the earlier patch in to two
http://reviews.llvm.org/D4610
Files:
lib/builtins/arm/sync-ops.h
Index: lib/builtins/arm/sync-ops.h
===================================================================
--- lib/builtins/arm/sync-ops.h
+++ lib/builtins/arm/sync-ops.h
@@ -18,29 +18,33 @@
#define SYNC_OP_4(op) \
.p2align 2 ; \
.thumb ; \
+ .syntax unified ; \
DEFINE_COMPILERRT_FUNCTION(__sync_fetch_and_ ## op) \
dmb ; \
mov r12, r0 ; \
LOCAL_LABEL(tryatomic_ ## op): \
ldrex r0, [r12] ; \
op(r2, r0, r1) ; \
strex r3, r2, [r12] ; \
- cbnz r3, LOCAL_LABEL(tryatomic_ ## op) ; \
+ cmp r3, #0 ; \
+ bne LOCAL_LABEL(tryatomic_ ## op) ; \
dmb ; \
bx lr
#define SYNC_OP_8(op) \
.p2align 2 ; \
.thumb ; \
+ .syntax unified ; \
DEFINE_COMPILERRT_FUNCTION(__sync_fetch_and_ ## op) \
push {r4, r5, r6, lr} ; \
dmb ; \
mov r12, r0 ; \
LOCAL_LABEL(tryatomic_ ## op): \
ldrexd r0, r1, [r12] ; \
op(r4, r5, r0, r1, r2, r3) ; \
strexd r6, r4, r5, [r12] ; \
- cbnz r6, LOCAL_LABEL(tryatomic_ ## op) ; \
+ cmp r6, #0 ; \
+ bne LOCAL_LABEL(tryatomic_ ## op) ; \
dmb ; \
pop {r4, r5, r6, pc}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4610.11737.patch
Type: text/x-patch
Size: 1243 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140722/cf2d159f/attachment.bin>
More information about the llvm-commits
mailing list