[Gc] libatomic_ops: patch improving VC++ WinCE ARM support

Ivan Maidanski ivmai at mail.ru
Fri Aug 28 14:53:11 PDT 2009


This small patch (ivmai123.diff) improves msftc/arm.c (and adds support for pre-ARMv6).
The patch is against the CVS plus diff110 [Aug 6] applied.

libatomic_ops ChangeLog entries:

	* src/atomic_ops/sysdeps/msftc/arm.h: Add FIXME for InterlockedOps
	(regarding memory barrier).
	* src/atomic_ops/sysdeps/msftc/arm.h: Don't recognize
	AO_ASSUME_ARM_ARCH6 anymore; check for _M_ARM >= 6 instead.
	* src/atomic_ops/sysdeps/msftc/arm.h (AO_nop_full,
	AO_test_and_set): Replace FIXME with the comment saying it is
	emulated (in generalize.h); include test_and_set_t_is_ao_t.h.
	* src/atomic_ops/sysdeps/msftc/arm.h (AO_store_full): Implement
	using InterlockedCompareExchange() (assuming the latter has a full
	mbar) for ARMv6+.
	* src/atomic_ops/sysdeps/msftc/arm.h: Include
	all_atomic_load_store.h and test_and_set_t_is_ao_t.h for the case
	of pre-ARMv6; add the comment.

Note 1: The inline asm is not used (since unsupported by VC++ for ARM).

Note 2: The main Q remains: Do _InterlockedOps really have a full memory barrier on WinCE?

Note 3: The code is used by GC only if PARALLEL_MARK (both pre-ARMv6 and ARMv6+ are supported).

Note 4: The code is untested on a real hardware (for now).

-------------- next part --------------
A non-text attachment was scrubbed...
Name: ivmai123.diff
Type: application/octet-stream
Size: 2413 bytes
Desc: not available
Url : https://napali.hpl.hp.com/pipermail/gc/attachments/20090829/d17c7352/ivmai123.obj

More information about the Gc mailing list