Patchwork libgo patch committed: Fix x86_64 Solaris pointer usage

login
register
mail settings
Submitter Ian Taylor
Date Feb. 20, 2013, 8:01 p.m.
Message ID <mcrliaioitx.fsf@google.com>
Download mbox | patch
Permalink /patch/222140/
State New
Headers show

Comments

Ian Taylor - Feb. 20, 2013, 8:01 p.m.
This patch from Janne Snabb should fix PR 56320 about random failures on
Solaris x86_64.  Bootstrapped and ran Go testsuite on
x86_64-unknown-linux-gnu.  Committed to mainline.

Ian

Patch

diff -r 29b742a2ed37 -r 3b1c3cceaf02 libgo/runtime/lfstack.c
--- a/libgo/runtime/lfstack.c	Fri Feb 15 10:54:51 2013 -0800
+++ b/libgo/runtime/lfstack.c	Wed Feb 20 11:41:05 2013 -0800
@@ -17,9 +17,10 @@ 
 #define PTR_MASK ((1ull<<PTR_BITS)-1)
 #define CNT_MASK (0ull-1)
 
-#if __SIZEOF_POINTER__ == 8 && defined(__sparc__)
-// SPARC64 uses all 64 bits of virtual addresses.  Use low-order three
-// bits as ABA counter.
+#if __SIZEOF_POINTER__ == 8 && (defined(__sparc__) || (defined(__sun__) && defined(__amd64__)))
+// SPARC64 and Solaris on AMD64 uses all 64 bits of virtual addresses.
+// Use low-order three bits as ABA counter.
+// http://docs.oracle.com/cd/E19120-01/open.solaris/816-5138/6mba6ua5p/index.html
 #undef PTR_BITS
 #undef CNT_MASK
 #undef PTR_MASK