summaryrefslogtreecommitdiff
path: root/lib/builtins/arm/sync_fetch_and_umax_8.S
diff options
context:
space:
mode:
authorOliver Stannard <oliver.stannard@arm.com>2014-09-29 10:23:20 +0000
committerOliver Stannard <oliver.stannard@arm.com>2014-09-29 10:23:20 +0000
commit8cf642b8dac6eefa2c707a67dea810629aa13e10 (patch)
treea4f39e15dec99aa71755692a91c90a3f2f557146 /lib/builtins/arm/sync_fetch_and_umax_8.S
parent2f794721f44110059fae571430cb89fd64a3ff36 (diff)
downloadcompiler-rt-8cf642b8dac6eefa2c707a67dea810629aa13e10.tar.gz
[compiler-rt] Do not use ldrexd or strexd on v7M
The ldrexd and strexd instructions are undefined for the ARMv7M architecture, so we cannot use them to implement the __sync_fetch_and_*_8 builtins. There is no other way to implement these without OS support, so this patch #ifdef's these functions out for M-class architectures. There are no tests as I cannot find any existing tests for these builtins. I used the __ARM_ARCH_PROFILE predefine because __ARM_FEATURE_LDREX is deprecated and not set by clang. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@218601 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/builtins/arm/sync_fetch_and_umax_8.S')
-rw-r--r--lib/builtins/arm/sync_fetch_and_umax_8.S2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/builtins/arm/sync_fetch_and_umax_8.S b/lib/builtins/arm/sync_fetch_and_umax_8.S
index 7716cfe82..d9b7965e5 100644
--- a/lib/builtins/arm/sync_fetch_and_umax_8.S
+++ b/lib/builtins/arm/sync_fetch_and_umax_8.S
@@ -14,6 +14,8 @@
#include "sync-ops.h"
+#if __ARM_ARCH_PROFILE != 'M'
#define umax_8(rD_LO, rD_HI, rN_LO, rN_HI, rM_LO, rM_HI) MINMAX_8(rD_LO, rD_HI, rN_LO, rN_HI, rM_LO, rM_HI, hi)
SYNC_OP_8(umax_8)
+#endif