[vmkit-commits] [vmkit] r54634 - /vmkit/trunk/include/mvm/JIT.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Mon Aug 11 00:20:53 PDT 2008
Author: geoffray
Date: Mon Aug 11 02:20:53 2008
New Revision: 54634
URL: http://llvm.org/viewvc/llvm-project?rev=54634&view=rev
Log:
Use LLVM atomic operations instead of gcc's. Find the right
macro to enable them with gcc > 4.2.
Modified:
vmkit/trunk/include/mvm/JIT.h
Modified: vmkit/trunk/include/mvm/JIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/JIT.h?rev=54634&r1=54633&r2=54634&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/JIT.h (original)
+++ vmkit/trunk/include/mvm/JIT.h Mon Aug 11 02:20:53 2008
@@ -93,7 +93,10 @@
extern llvm::Function* llvm_memcpy_i32;
extern llvm::Function* llvm_memset_i32;
+extern llvm::Function* llvm_atomic_lcs_i8;
+extern llvm::Function* llvm_atomic_lcs_i16;
extern llvm::Function* llvm_atomic_lcs_i32;
+extern llvm::Function* llvm_atomic_lcs_i64;
extern llvm::ExecutionEngine* executionEngine;
@@ -159,6 +162,18 @@
extern Code* getCodeFromPointer(void* addr);
extern void addMethodInfo(void* end, Code* c);
+extern uint8 (*llvm_atomic_cmp_swap_i8) ( uint8* ptr, uint8 cmp, uint8 val );
+extern uint16 (*llvm_atomic_cmp_swap_i16) ( uint16* ptr, uint16 cmp, uint16 val );
+extern uint32 (*llvm_atomic_cmp_swap_i32) ( uint32* ptr, uint32 cmp, uint32 val );
+extern uint64 (*llvm_atomic_cmp_swap_i64) ( uint64* ptr, uint64 cmp, uint64 val );
+
+// TODO: find what macro for gcc < 4.2
+#if 1
+#define __sync_bool_compare_and_swap(ptr, cmp, val) \
+ (mvm::jit::llvm_atomic_cmp_swap_i32((uint32*)(ptr), (uint32)(cmp), (uint32)(val)) == (uint32)(cmp))
+#define __sync_val_compare_and_swap(ptr, cmp,val) \
+ mvm::jit::llvm_atomic_cmp_swap_i32((uint32*)(ptr), (uint32)(cmp), (uint32)(val))
+#endif
} // end namespace jit
} // end namespace mvm
More information about the vmkit-commits
mailing list