libgo patch committed: Support sparc64 in lfstack.c

Submitted by Rainer Orth on Jan. 29, 2013, 12:34 p.m.

Details

Message ID yddpq0o88xx.fsf@lokon.CeBiTec.Uni-Bielefeld.DE
State New
Headers show

Commit Message

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

Comments

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 hide | download patch | download mbox

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)