Page 1 of 1

Via C3 und i686 Probleme bei z.B. kernel 2.6.21 oder busybox

Posted: Sun Aug 12, 2007 11:47 pm
by a_Boehme
Hi,

ich habe schon seit ca. zwei Jahren einen Server mit einem VIA C3 laufen. Bei der gentoo installation hatte ich gelesen, man könnte das System auf i686 laufen lassen, wenn man
die CFLAGS mit march=c3 setzt. Das funktionierte bis jetzt auch problemlos, leider bekam ich nun bei einem Systemupdate Probleme....

Der Kernel wollte nicht mehr und bei make menuconfig kam sofort "illegal instruction", was vorher niemals der Fall war. Auch Busybox scheiterte mit der gleichen Fehlermeldung.
Nach einigem Suchen habe ich nun im Makefile des Kernels das Flag "march=c3" ergänzt und es funktioniert alles wieder einwandfrei..

Daher meine Frage: Was hat sich hier geändert, bzw. ist es evt. Zufall und der aktualisierte gcc nutzt nun der CPU unbekannte Instruktionen ? Sollten die globalen Flags aus der make.conf nicht auch bei der Übersetzung von Hilfsprogrammen des Kernels (scripts/basic/fixdep) genutzt werden ?

cu

Posted: Mon Aug 13, 2007 3:49 am
by micmac
Manchen VIA CPUs haben kein "CMOV" -> kein i686. Hier steht ein ME6000 mit Samuel2-CPU und das ist auch so einer. Hatte auch mal i686 eingestellt und das ging auch alles gut, bis ich gemerkt habe das Teile von den mjpegtools nicht funktionierten. Also habe ich i585 benutzt und alles war in Ordnung. /proc/cpuinfo zeigt CMOV an.

Posted: Mon Aug 13, 2007 8:23 am
by a_Boehme
Durch das compilerflag march=c3 sollte aber die Verwendung von CMOV verhindert werden. Immerhin funktioniert das Übersetzen ja auch, wenn man selbst das Makefile ändert. Ich frage mich nun, warum manche sources ohne die Konfiguration aus der make.conf übersetzt werden. Wenn das "normal" ist, muss ich wohl auch auf 586 umsteigen oder mir einen aktuelleren C3 kaufen :(

Posted: Mon Aug 13, 2007 8:48 am
by schotter
also ich nehm

Code: Select all

march=c3-2
und hab damit keinerlei Probleme.

Posted: Mon Aug 13, 2007 10:18 am
by Jinidog

Code: Select all

export CFLAGS_KERNEL="-march=c3 -O2 -pipe -fomit-frame-pointer"
Sollte das ändern des Makefiles unnötig machen.