Messages in this thread Patch in this message | | | Date | Mon, 16 Nov 2009 15:27:20 -0500 | From | Mathieu Desnoyers <> | Subject | Re: Sparc64 support added to Userspace RCU |
| |
* David Miller (davem@davemloft.net) wrote: > From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> > Date: Thu, 22 Oct 2009 15:57:53 -0400 > > > Feedback is welcome, > > __sparc_v8__ does not mean 64-bit longs or pointers as implied here: > > #ifndef __SIZEOF_LONG__ > #if (defined(__sparc_v8__) || defined(__sparc_v9__)) > #define __SIZEOF_LONG__ 8 > #else > #define __SIZEOF_LONG__ 4 > #endif > #endif > > "v8" was the last 32-bit standard of the cpu architecture. > > Otherwise looks fine. > > Although this port won't be very useful until it can be built in > 32-bit mode. As most applications on sparc64 systems are still > 32-bit. Like on powerpc, people only rarely build things 64-bit on > sparc64. > > You need to build with "-Wa,-Av9a" on the GCC command line for that > case so that the assembler allows the v9 instructions emitted by your > macros, even when building for 32-bit. > > Hope this helps.
Yes ! Thanks a lot for this information. I'll push the following fix in my tree.
Mathieu
diff --git a/README b/README index 883b808..ca23d43 100644 --- a/README +++ b/README @@ -18,11 +18,14 @@ BUILDING Forcing a 32-bit build with 386 backward compatibility: * CFLAGS="-m32 -g -O2" ./configure --host=i386-pc-linux-gnu + Forcing a 32-bit build for Sparcv9 (typical for Sparc v9) + * CFLAGS="-m32 -Wa,-Av9a -g -O2" ./configure + ARCHITECTURES SUPPORTED ----------------------- Currently, x86 (i386, i486, i586, i686), x86 64-bit, PowerPC 32/64, S390, S390x -and Sparc64 are supported. Only tested on Linux so far, but should +and Sparcv9 32/64 are supported. Only tested on Linux so far, but should theoretically work on other operating systems. QUICK START GUIDE diff --git a/urcu/uatomic_arch_sparc64.h b/urcu/uatomic_arch_sparc64.h index 35b9ac2..28829d2 100644 --- a/urcu/uatomic_arch_sparc64.h +++ b/urcu/uatomic_arch_sparc64.h @@ -24,7 +24,7 @@ #include <urcu/system.h> #ifndef __SIZEOF_LONG__ -#if (defined(__sparc_v8__) || defined(__sparc_v9__)) +#ifdef __LP64__ #define __SIZEOF_LONG__ 8 #else #define __SIZEOF_LONG__ 4 -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
| |