On Wed, 29 Apr 2015 13:31:13 +0200 Ralf wrote: > Hi, > > just a short question: I don't like genkernel, I always compile my > kernel manually using menuconfig. > So the CFLAGs of my make.conf won't get applied. > > What is the best way to (persistently) set the CFLAGs for the kernel > compilation? > > - I don't like invoking 'CFLAGS="-O2 -march=foo"make' > - I don't want to set CFLAGS as a persistent environment variable. > - I don't want to modify the kernel Makefile > > Does it actually make sense to set an optimization level and -march?
Short answer: don't even try to use general CFLAGS for a kernel,
you'll badly damage its performance.
Long answer: context switching between integer and floating point
is very expensive, that's why kernel is integer only, any
non-integer calculations are implemented using fixed point (integer
numbers from CPU's POW). That's why kernel makes sure that no
floating point instructions sneaks in using CFLAGS, you may see a
lot of -mno-${intrucion_set} flags when running make -V. Futhermore
kernel needs several memory alignment flags which should not be
removed as well.
The proper way to fine-tune CFLAGS for a local CPU support will be
to use kernel-gcc-patches[1], as was pointed in other reply already.
This code will ensure that proper CPU support is enabled while
keeping all floating point instructions disabled. Just apply a
patch and select native arch in CPU arch menu.
[1] https://github.com/graysky2/kernel_gcc_patch
Best regards,
Andrew Savchenko
pgpuqTvm6pXaj.pgp
Description: PGP signature

