From: Paolo Bonzini Date: Mon, 1 Mar 2010 19:12:21 +0000 (-0500) Subject: centralize definition of BITS_PER_LONG X-Git-Tag: v0.4.2~9 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=1b27a7725e853b9f0673a0ed2639b8dc1065f21b;p=urcu.git centralize definition of BITS_PER_LONG Use __SIZEOF_LONG__, defined by GCC 4.3 or later, or _LP64, defined by GCC 3.4 or later. Signed-off-by: Paolo Bonzini Signed-off-by: Mathieu Desnoyers --- diff --git a/urcu/arch_ppc.h b/urcu/arch_ppc.h index 1e096db..eeeb753 100644 --- a/urcu/arch_ppc.h +++ b/urcu/arch_ppc.h @@ -32,10 +32,6 @@ extern "C" { /* Include size of POWER5+ L3 cache lines: 256 bytes */ #define CACHE_LINE_SIZE 256 -#ifndef BITS_PER_LONG -#define BITS_PER_LONG (__SIZEOF_LONG__ * 8) -#endif - #define mb() asm volatile("sync":::"memory") /* diff --git a/urcu/arch_s390.h b/urcu/arch_s390.h index 4ad3ee8..1a55e0d 100644 --- a/urcu/arch_s390.h +++ b/urcu/arch_s390.h @@ -37,18 +37,6 @@ extern "C" { #define CACHE_LINE_SIZE 128 -#ifndef __SIZEOF_LONG__ -#ifdef __s390x__ -#define __SIZEOF_LONG__ 8 -#else -#define __SIZEOF_LONG__ 4 -#endif -#endif - -#ifndef BITS_PER_LONG -#define BITS_PER_LONG (__SIZEOF_LONG__ * 8) -#endif - #define mb() __asm__ __volatile__("bcr 15,0" : : : "memory") typedef unsigned long long cycles_t; diff --git a/urcu/arch_sparc64.h b/urcu/arch_sparc64.h index 4d08d55..9d85b5e 100644 --- a/urcu/arch_sparc64.h +++ b/urcu/arch_sparc64.h @@ -31,10 +31,6 @@ extern "C" { #define CACHE_LINE_SIZE 256 -#ifndef BITS_PER_LONG -#define BITS_PER_LONG (__SIZEOF_LONG__ * 8) -#endif - /* * Inspired from the Linux kernel. Workaround Spitfire bug #51. */ diff --git a/urcu/compiler.h b/urcu/compiler.h index aab2c5c..5b7bb30 100644 --- a/urcu/compiler.h +++ b/urcu/compiler.h @@ -47,4 +47,12 @@ #define min(a,b) ((a)<(b)?(a):(b)) #endif +#if defined(__SIZEOF_LONG__) +#define BITS_PER_LONG (__SIZEOF_LONG__ * 8) +#elif defined(_LP64) +#define BITS_PER_LONG 64 +#else +#define BITS_PER_LONG 32 +#endif + #endif /* _URCU_COMPILER_H */ diff --git a/urcu/uatomic_arch_ppc.h b/urcu/uatomic_arch_ppc.h index 39c4c24..4db7007 100644 --- a/urcu/uatomic_arch_ppc.h +++ b/urcu/uatomic_arch_ppc.h @@ -27,24 +27,12 @@ extern "C" { #endif -#ifndef __SIZEOF_LONG__ -#ifdef __powerpc64__ -#define __SIZEOF_LONG__ 8 -#else -#define __SIZEOF_LONG__ 4 -#endif -#endif - #ifdef __NO_LWSYNC__ #define LWSYNC_OPCODE "sync\n" #else #define LWSYNC_OPCODE "lwsync\n" #endif -#ifndef BITS_PER_LONG -#define BITS_PER_LONG (__SIZEOF_LONG__ * 8) -#endif - #define ILLEGAL_INSTR ".long 0xd00d00" /* diff --git a/urcu/uatomic_arch_s390.h b/urcu/uatomic_arch_s390.h index 5942ffe..0a0f238 100644 --- a/urcu/uatomic_arch_s390.h +++ b/urcu/uatomic_arch_s390.h @@ -36,18 +36,6 @@ extern "C" { #endif -#ifndef __SIZEOF_LONG__ -#ifdef __s390x__ -#define __SIZEOF_LONG__ 8 -#else -#define __SIZEOF_LONG__ 4 -#endif -#endif - -#ifndef BITS_PER_LONG -#define BITS_PER_LONG (__SIZEOF_LONG__ * 8) -#endif - #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2) #define COMPILER_HAVE_SHORT_MEM_OPERAND #endif diff --git a/urcu/uatomic_arch_sparc64.h b/urcu/uatomic_arch_sparc64.h index 81f95cb..399ac12 100644 --- a/urcu/uatomic_arch_sparc64.h +++ b/urcu/uatomic_arch_sparc64.h @@ -27,18 +27,6 @@ extern "C" { #endif -#ifndef __SIZEOF_LONG__ -#ifdef __LP64__ -#define __SIZEOF_LONG__ 8 -#else -#define __SIZEOF_LONG__ 4 -#endif -#endif - -#ifndef BITS_PER_LONG -#define BITS_PER_LONG (__SIZEOF_LONG__ * 8) -#endif - /* cmpxchg */ static inline __attribute__((always_inline)) diff --git a/urcu/uatomic_arch_x86.h b/urcu/uatomic_arch_x86.h index 666e498..043e616 100644 --- a/urcu/uatomic_arch_x86.h +++ b/urcu/uatomic_arch_x86.h @@ -30,18 +30,6 @@ extern "C" { #endif -#ifndef __SIZEOF_LONG__ -#if defined(__x86_64__) || defined(__amd64__) -#define __SIZEOF_LONG__ 8 -#else -#define __SIZEOF_LONG__ 4 -#endif -#endif - -#ifndef BITS_PER_LONG -#define BITS_PER_LONG (__SIZEOF_LONG__ * 8) -#endif - /* * Derived from AO_compare_and_swap() and AO_test_and_set_full(). */ diff --git a/urcu/uatomic_generic.h b/urcu/uatomic_generic.h index 9ee7b7b..93435d1 100644 --- a/urcu/uatomic_generic.h +++ b/urcu/uatomic_generic.h @@ -28,10 +28,6 @@ extern "C" { #endif -#ifndef BITS_PER_LONG -#define BITS_PER_LONG (__SIZEOF_LONG__ * 8) -#endif - #ifndef uatomic_set #define uatomic_set(addr, v) STORE_SHARED(*(addr), (v)) #endif