--- libecb/ecb.h 2011/07/18 01:25:46 1.53 +++ libecb/ecb.h 2011/07/28 13:45:44 1.56 @@ -68,7 +68,7 @@ #ifndef ECB_MEMORY_FENCE #if ECB_GCC_VERSION(2,5) #if __x86 - #define ECB_MEMORY_FENCE __asm__ __volatile__ ("lock; or.b $0, -1(%%esp)" : : : "memory") + #define ECB_MEMORY_FENCE __asm__ __volatile__ ("lock; orb $0, -1(%%esp)" : : : "memory") #define ECB_MEMORY_FENCE_ACQUIRE ECB_MEMORY_FENCE #define ECB_MEMORY_FENCE_RELEASE ECB_MEMORY_FENCE /* better be safe than sorry */ #elif __amd64 @@ -84,11 +84,12 @@ #define ECB_MEMORY_FENCE __sync_synchronize () #define ECB_MEMORY_FENCE_ACQUIRE ({ char dummy = 0; __sync_lock_test_and_set (&dummy, 1); }) #define ECB_MEMORY_FENCE_RELEASE ({ char dummy = 1; __sync_lock_release (&dummy ); }) - #elif _MSC_VER >= 1400 + #elif _MSC_VER >= 1400 && 0 /* TODO: only true when using volatiles */ #define ECB_MEMORY_FENCE do { } while (0) #define ECB_MEMORY_FENCE_ACQUIRE ECB_MEMORY_FENCE #define ECB_MEMORY_FENCE_RELEASE ECB_MEMORY_FENCE - #elif defined(_WIN32) && defined(MemoryBarrier) + #elif defined(_WIN32) + #include #define ECB_MEMORY_FENCE MemoryBarrier () #define ECB_MEMORY_FENCE_ACQUIRE ECB_MEMORY_FENCE #define ECB_MEMORY_FENCE_RELEASE ECB_MEMORY_FENCE @@ -234,9 +235,6 @@ return x >> 24; } - /* you have the choice beetween something with a table lookup, */ - /* something using lots of bit arithmetic and a simple loop */ - /* we went for the loop */ ecb_function_ int ecb_ld32 (uint32_t x) ecb_const; ecb_function_ int ecb_ld32 (uint32_t x) {