please pull powerpc.git 'merge' branch

Olof Johansson olof at lixom.net
Sun Apr 30 14:20:59 EST 2006


On Sun, Apr 30, 2006 at 05:12:57AM +0200, Segher Boessenkool wrote:
> >>Previously we've said implementation instead of specification
> >>("PPC_FEATURE_POWER5_PLUS" etc). That's better than saying base
> >>architecture version, since there are parts of the arch that might or
> >>might not be implemented (i.e. optional features, etc).
> >
> >We now have the AT_PLATFORM string, which we didn't have when we added
> >the POWER5_PLUS etc. features.  That specifies which particular
> >implementation we are on quite precisely.  We don't want to have a bit
> >for every single implementation or we'll run out of bits.
> >
> >The ARCH_2_05 bit means all the non-optional bits of the 2.05
> >architecture.  If there are optional features in the architecture, we
> >have separate bits for them.  For example, we don't have separate
> >bits for POWER4 and for 970; instead we have a HAS_ALTIVEC bit, and
> >for 970 we set both POWER4 and HAS_ALTIVEC.  So the POWER4 bit is
> >really a "2.00 architecture version" bit.
> 
> Except that the 970 at least is actually version 2.01.

Are there any userspace-visible differences between 2.00 and 2.01?

> Sounds
> like names are better than bare numbers -- you showed yourself that
> numbers like this are confusing, but you also say that a cpu name
> really means an arch version (which isn't so bad -- there generally
> is only one "main" CPU per arch version anyway, and people generally
> know what is compatible to what).

It's actually about an even tradeoff between the two. We run the risk
of running out of bits eventually no matter what, and as long as it's
blindingly clear and well stated that it does not imply any optional
features, then it doesn't matter. This puts the burden on userspace
developers to know which features are optional, not just what works on
their POWER6 lab machine, etc.

> So please rename ARCH_2_05 to the name of the first CPU that implements
> architecture 2.05?

We already have SMT, ICACHE_SNOOP and ALTIVEC feature bits, so it probably
makes sense to stay in the ARCH_2_05 direction. Unfortunately it might
be tricky to rename the old defines now due to userland exposure.

I guess Cell breaks all this logic though. Which PPC base version does
it implement?


-Olof



More information about the Linuxppc-dev mailing list