
all 32 bit platforms that i know of are using the full 32bit as address space (the lower two bits are 0 because of 32bit alignment) ... on 64bit platforms it is quite different ... ppc64, ia64 and x86_64 all use just a part of the full address space (iirc 48 bit for x86_64) ... the rest should be usable as aba prevention tag.
48 bits is only for the current x86_64 platforms, it will get upgraded to 64 bits eventually.
However, such platforms will also support DWCAS, so you have your backup solution.
it is also performance related, though ... on x86_64 (nehalem) my fifo stress test runs about 25% faster with pointer/tag compression than with cmpxchg16b ... that said, the lock-free property is for me more important than the throughput, since i am using it for soft real-time systems ... tim -- tim@klingt.org http://tim.klingt.org I had nothing to offer anybody except my own confusion Jack Kerouac