Re: [patch] voluntary-preempt-2.6.8-rc3-O4

Tim Wright
2004-08-11T02:49:50Z

On Tue, 2004-08-10 at 10:37, Dave Jones wrote:
> On Tue, Aug 10, 2004 at 05:25:48PM +0100, Alan Cox wrote:
> > On Maw, 2004-08-10 at 18:10, Lee Revell wrote:
> > > OK, with CONFIG_M586TSC, I am getting a lot of lockups. A few happened
> > > during normal desktop use, and it locks up hard when starting jackd.
> > > Could this have anything to do with the ALSA drivers (which I am
> > > compiling seperately from ALSA cvs) detecting my build system as i686?
> > > I have read that the C3 is more like a 486 (with MMX & 3DNow) than a
> > > 686.
> >
> > The C3 is a full 686 instruction set. The kernel is different because
> > the GNU tool people couldn't read manuals and once the error was made
> > it was a bit too late to fix it.
> >
> > Thus ALSA deciding its 686 is fine.
>
> Depends which C3. If OP's C3 lacks cmov, it definitly is not ok.
> Any cmov ending up in that module will blow up.
>

Not that it helps at all, but the conditional move instruction was
marked as optional by Intel, hence the 'cmov' capability flag (in the
flags part of /proc/cpuinfo). As you say, the earlier C3 chips (like the
one in my firewall) lack support for this instruction:

model name : VIA Samuel 2
cpu MHz : 533.365
flags : fpu de tsc msr cx8 mtrr pge mmx 3dnow

So, strictly speaking, you shouldn't use cmov for something that's
simply "i686" compatible. Of course, gcc etc. uses it because it's very
nice from the point of view of avoiding having to do branches and the
associated malarky and someone failed to spot that it was optional. So,
yes, it's not OK to use -march=i686 on these chips. Modern gccs know
about -march=c3, which ought to be a good bet for these chips (one would
hope).

Tim

--
Tim Wright <timw@splhi.com>
Splhi