At Mon, 27 Jan 2003 11:39:43 -0500 (EST), Alan Cox wrote: > > >>>>>GCC 3.2 still uses CMOVE instructions on -march=i686. > > >>>>> > > >>>>>On the other hand: > > >>>>> {"c3", PROCESSOR_I486, PTA_MMX | PTA_3DNOW}, > > >>>>>GCC disagrees with you that the C3 is an i686. > > gcc uses i486 scheduling because that gives best performance > > The situation is as follows > > gcc "i686" definition is wrong. The gcc people wont fix it because the 686 > definition without cmov is mostly useless anyway.
Thanks for your explanation. Hmm. "cmov" is really key instruction... I think it may be needed that we add -mcpu=c3 for gcc, which generates i686 without cmov instruction. > The C3 is a model 6 cpu, the kernel reports it correctly and wont change Yup. We finally conclude that we fix this problem using glibc dynamic libraries harware capabilities. It fixes at least for dynamic libraries, not static libraries or single binaries (such software needs to check hardware capabilities with itself, I think). I've made a patch, and wait testers result... (See the last mail sent by gotom: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=164766 ) I want VIA C3 user to test the latest my libc6 build at http://people.debian.org/~gotom/ and test with the latest ssh and libssl0.9.7. "ldd /usr/bin/ssh" tells us whether it uses cmov libs or not. > Non Debian packaging systems know how to handle this and regard cmov as > a mandatory CPU attribute for 686 package install. Ugly but works. Interesting, I guess RPM has such capability. I dunno dpkg has such functions, but I think it's useful on debian too. Regards, -- gotom