From: David Miller <davem@davemloft.net>
Subject: Re: [ltt-dev] Sparc64 support added to Userspace RCU
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:
"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.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
CC: David Miller <davem@davemloft.net>
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
#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