add __sync_synchronize. Needed by compiler when emitting thumb1 with -fno-builtin

llvm-svn: 95132
This commit is contained in:
Nick Kledzik 2010-02-02 21:34:04 +00:00
parent 0cd6c2a047
commit debb901045
2 changed files with 35 additions and 1 deletions

View File

@ -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

View File

@ -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