Patchwork libgo patch committed: Support sparc64 in lfstack.c

login
register
mail settings
Submitter Rainer Orth
Date Jan. 29, 2013, 12:34 p.m.
Message ID <yddpq0o88xx.fsf@lokon.CeBiTec.Uni-Bielefeld.DE>
Download mbox | patch
Permalink /patch/216509/
State New
Headers show

Comments

Rainer Orth - Jan. 29, 2013, 12:34 p.m.
Ian Lance Taylor <iant@google.com> writes:

> Looks like sparc64 broke for libgo when parallel garbage collection was
> introduced.  This patch is an attempt to get it working again.
> Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu, not that
> that proves much.  Committed to mainline.

I needed the following patch on top of yours to get it to compile on
Solaris/SPARC.  The #undefs are necessary to avoid redefinition
errors.  This massivly improves Solaris/SPARC testsuite results,
though there are still a few common Solaris failures and a few others
that might be endianess issues.

	Rainer
Ian Taylor - Jan. 29, 2013, 1:58 p.m.
On Tue, Jan 29, 2013 at 4:34 AM, Rainer Orth
<ro@cebitec.uni-bielefeld.de> wrote:
> Ian Lance Taylor <iant@google.com> writes:
>
>> Looks like sparc64 broke for libgo when parallel garbage collection was
>> introduced.  This patch is an attempt to get it working again.
>> Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu, not that
>> that proves much.  Committed to mainline.
>
> I needed the following patch on top of yours to get it to compile on
> Solaris/SPARC.  The #undefs are necessary to avoid redefinition
> errors.  This massivly improves Solaris/SPARC testsuite results,
> though there are still a few common Solaris failures and a few others
> that might be endianess issues.

Thanks.  Committed to mainline.

Ian

Patch

diff --git a/libgo/runtime/lfstack.c b/libgo/runtime/lfstack.c
--- a/libgo/runtime/lfstack.c
+++ b/libgo/runtime/lfstack.c
@@ -19,7 +19,10 @@ 
 
 #if __SIZEOF_POINTER__ == 8 && defined(__sparc__)
 // SPARC64 uses all 64 bits of virtual addresses.  Use low-order three
-bits as ABA counter.
+// bits as ABA counter.
+#undef PTR_BITS
+#undef CNT_MASK
+#undef PTR_MASK
 #define PTR_BITS 0
 #define CNT_MASK 7
 #define PTR_MASK ((0ull-1)<<3)