--- boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp.orig	2009-03-02 11:22:16.000000000 -0500
+++ boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp	2009-11-12 09:51:25.000000000 -0500
@@ -30,10 +30,10 @@
 
 inline int32_t compare_and_swap( int32_t * dest_, int32_t compare_, int32_t swap_ )
 {
-    __asm__ __volatile__( "cas %0, %2, %1"
-                        : "+m" (*dest_), "+r" (swap_)
-                        : "r" (compare_)
-                        : "memory" );
+    __asm__ __volatile__( "casa [%3] 0x80, %2, %1"
+			: "=m" (*dest_), "=r" (swap_)
+			: "r" (compare_), "r" (dest_), "1" (swap_), "m" (*dest_)
+			: "memory" );
 
     return swap_;
 }
