forked from OSchip/llvm-project
add __sync_synchronize. Needed by compiler when emitting thumb1 with -fno-builtin
llvm-svn: 95132
This commit is contained in:
parent
0cd6c2a047
commit
debb901045
|
@ -0,0 +1,33 @@
|
|||
//===-- sync_synchronize - Implement memory barrier * ----------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "../assembly.h"
|
||||
|
||||
//
|
||||
// When compiling a use of the gcc built-in __sync_synchronize() in thumb1 mode
|
||||
// the compiler may emit a call to __sync_synchronize.
|
||||
// On Darwin the implementation jumps to an OS supplied function named
|
||||
// OSMemoryBarrier
|
||||
//
|
||||
|
||||
.text
|
||||
.syntax unified
|
||||
|
||||
#if __APPLE__
|
||||
|
||||
DEFINE_COMPILERRT_PRIVATE_FUNCTION(__sync_synchronize)
|
||||
stmfd sp!, {r7, lr}
|
||||
add r7, sp, #0
|
||||
bl _OSMemoryBarrier
|
||||
ldmfd sp!, {r7, pc}
|
||||
|
||||
// tell linker it can break up file at label boundaries
|
||||
.subsections_via_symbols
|
||||
|
||||
#endif
|
|
@ -54,6 +54,7 @@ FUNCTIONS.armv6 := $(FUNCTIONS) \
|
|||
subdf3vfp subsf3vfp truncdfsf2vfp unorddf2vfp unordsf2vfp \
|
||||
modsi3 umodsi3 udivsi3 divsi3 \
|
||||
switch8 switchu8 switch16 switch32 \
|
||||
restore_vfp_d8_d15_regs save_vfp_d8_d15_regs
|
||||
restore_vfp_d8_d15_regs save_vfp_d8_d15_regs \
|
||||
sync_synchronize
|
||||
|
||||
VISIBILITY_HIDDEN := 0
|
||||
|
|
Loading…
Reference in New Issue