[Gc] Patch for atomic_ops GCC sparc support
hans.boehm at hp.com
Tue Sep 1 14:52:30 PDT 2009
I believe the code came from Patrick Marlier. I checked it in after wrapping most of it in a #ifndef NO_SPARC_V9, to allow an easier override if someone has really old hardware. (I have a machine that may need it :-( )
Sorry about the long delay on this, and belated thanks.
I did not test. Someone with a modern SPARC probably should.
I suspect this could use further improvement:
- Some of the comments now look obsolete.
- The old file assumed TSO. I suspect that's the right assumption. Especially under TSO, I'm suspicious that the membar's aren't needed for compare_and_swap? However, it would probably help a lot to define AO_nop_full() as membar #StoreLoad (or stronger, though I suspect that doesn't matter for TSO?).
> -----Original Message-----
> From: gc-bounces at napali.hpl.hp.com
> [mailto:gc-bounces at napali.hpl.hp.com] On Behalf Of Ivan Maidanski
> Sent: Wednesday, August 05, 2009 9:42 AM
> To: gc at napali.hpl.hp.com
> Subject: [Gc] Patch for atomic_ops GCC sparc support
> The attached patch adds CAS for sparc[v9] and fixes
> test_and_set for sparcv9. The original author is unknown (it
> comes from sf.net bdwgc Tracker/Patches), I did only some
> code reformatting. Neither compiled nor tested by me.
> libatomic_ops ChangeLog entries:
> * src/atomic_ops/sysdeps/gcc/sparc.h (AO_test_and_set_full): Use
> AO_TS_VAL_t for "oldval" (for 64-bit support).
> * src/atomic_ops/sysdeps/gcc/sparc.h (AO_compare_and_swap_full):
> New function implemented.
More information about the Gc