Ok, so after having realized that this seems to be more about a bug with
gcc, I'm really not as convinced any more.
As far as I can tell, there are three issues:
- "-mtune=core/core2/pentium4/.." is buggy in some gas/gcc versions on
x86-32, and makes architectural choices.
Any actual _released_ versions? Maybe it's just a current SVN issue?
Workaround: don't use it. And yes, X86_GENERIC=y will do that, although
quite frankly that seems to be dubious in itself. But quite frankly,
it's a gcc bug, and we should see it as such.
The better workaround may well be "-Wa,-mtune=generic" as you pointed
out.
- We do the CONFIG_P6_NOPL thing ourselves, and we should just stop
doing that on 32-bit. There simply isn't a good enough reason to do so.
I already posteed the Kconfig.cpu patch to just stop doing it.
- X86_GENERIC means _other_ things too, like doing a 128-bit cacheline
just so that it won't suck horribly on P4's even if it's otherwise
tuned for a good microarchitecture.
And they really do seem to be _separate_ issues. Do we really want to tie
these things together under X86_GENERIC?
Linus
--