From 009dee833c94ebcf7199514f32baf3f4530d92f0 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 7 May 2013 18:28:36 +0200 Subject: [PATCH] centos5 gcc 4.1 asm bug include/atomic/x86-gcc.h: force %esi register, don't give gcc a choice. (otherwise it could choose %ebx, and 4.1 did) --- cmake/os/Linux.cmake | 6 ------ include/atomic/x86-gcc.h | 6 +++--- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/cmake/os/Linux.cmake b/cmake/os/Linux.cmake index 108e06cf7b0..36d7ade66a7 100644 --- a/cmake/os/Linux.cmake +++ b/cmake/os/Linux.cmake @@ -47,9 +47,3 @@ IF(HAVE_DECL_SHM_HUGETLB) SET(HAVE_LARGE_PAGE_OPTION 1) ENDIF() -IF(CMAKE_SIZEOF_VOID_P EQUAL 4 AND CMAKE_SYSTEM_PROCESSOR MATCHES "86") - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=i686") - SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -march=i686") -ENDIF() - diff --git a/include/atomic/x86-gcc.h b/include/atomic/x86-gcc.h index 2238347d419..173e32e790c 100644 --- a/include/atomic/x86-gcc.h +++ b/include/atomic/x86-gcc.h @@ -124,10 +124,10 @@ asm volatile ("push %%ebx;" \ "movl (%%ecx), %%ebx;" \ "movl 4(%%ecx), %%ecx;" \ - LOCK_prefix "; cmpxchg8b %0;" \ + LOCK_prefix "; cmpxchg8b (%%esi);" \ "setz %2; pop %%ebx" \ - : "=m" (*a), "+A" (*cmp), "=c" (ret) \ - : "c" (&set), "m" (*a) \ + : "+S" (a), "+A" (*cmp), "=c" (ret) \ + : "c" (&set) \ : "memory", "esp") #endif