ZFS committed to the FreeBSD base.
des at des.no
Thu Apr 12 08:54:23 UTC 2007
Peter Jeremy <peterjeremy at optushome.com.au> writes:
> There's a feature bit (CPUID_CX8) that advertises the availability of
> cmpxchg8b (and maybe some related instructions). My pre-MMX 586 has
> this bit set so I presume anything later than 486 will support it.
> (I'm not sure about the low-end VIA, GEODE etc clones).
The Geode is a 486, and does not support it.
The C3 however is a 586. The C3 Ezra and C3 Samuel / Samuel 2 do not
have CX8. I'm not sure about the C3 Nehemiah, I don't have one
running at the moment.
> I agree that GENERIC should run on lowest-common-denominator hardware
> (the definition of that is a subject for a different thread). GENERIC
> performance could be enhanced by using an indirect call for 8-byte
> atomic instructions and selecting between the cmpxchg8b and
> alternative implementation as part of the CPU startup (much like
> i586_bcopy). If CPU_486 is not defined, you code could inline the
> cmpxchg8b-based variant.
Our native atomic operations are all defined as either macros or
static inline functions in machine/atomic.h, so we can easily make
this choice at compile time based on a config option.
Dag-Erling Smørgrav - des at des.no
More information about the freebsd-current