Skip to content

Commit

Permalink
[compiler-rt][builtins] Move DMB definition to syn-ops.h
Browse files Browse the repository at this point in the history
Compiler-rt cross-compile for ARMv5 fails because D99282 made it an error if DMB
is used for any pre-ARMv6 targets. More specifically, the "#error only supported
on ARMv6+" added in D99282 will cause compilation to fail when any source file
which includes assembly.h are compiled for pre-ARMv6 targets. Since the only
place where DMB is used is syn-ops.h (which is only included by
arm/sync_fetch_and_* and these files are excluded from being built for older
targets), this patch moves the definition there to avoid the issues described
above.

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D123105
  • Loading branch information
pzhengqc committed Apr 7, 2022
1 parent fef56f7 commit 1c94158
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
8 changes: 8 additions & 0 deletions compiler-rt/lib/builtins/arm/sync-ops.h
Expand Up @@ -14,6 +14,14 @@

#include "../assembly.h"

#if __ARM_ARCH >= 7
#define DMB dmb
#elif __ARM_ARCH >= 6
#define DMB mcr p15, #0, r0, c7, c10, #5
#else
#error DMB is only supported on ARMv6+
#endif

#define SYNC_OP_4(op) \
.p2align 2; \
.syntax unified; \
Expand Down
8 changes: 0 additions & 8 deletions compiler-rt/lib/builtins/assembly.h
Expand Up @@ -189,14 +189,6 @@
JMP(ip)
#endif

#if __ARM_ARCH >= 7
#define DMB dmb
#elif __ARM_ARCH >= 6
#define DMB mcr p15, #0, r0, c7, c10, #5
#else
#error only supported on ARMv6+
#endif

#if defined(USE_THUMB_2)
#define WIDE(op) op.w
#else
Expand Down

0 comments on commit 1c94158

Please sign in to comment.