Horst von Brand (email@example.com)
Thu, 31 Dec 1998 14:14:48 -0400
"David Campbell" <firstname.lastname@example.org> said:
> The ppa driver was broken due to a patch applied to the asm code to
> prevent egcc complaining about "trashing registers" which is apparently
> not supported for gcc (but gcc doesn't complain about it either).
The exact status is that gcc has outlawed this usage[*] for ages, but gcc
on ia32 (and a few other targets) never enforced the restriction, "almost
always" doing the right thing. Unfortunately, this has been used quite
extensively in the linux kernel. From the egcs-19981213 or so development
snapshot of egcs on this is now a fatal error. My fixes to the offending
asm()s are in Alan Cox's patchsets <ftp://ftp.uk.linux.org/pub/linux/alan/>
for 2.1 and 2.2 kernels. Currently linux-2.2.0-pre1-ac4 is running here
(i586/100 UP), compiled without -fno-strength-reduce and -march=pentium
instead of the customary '-m486 -malign-...' with egcs-19981226. ppa works
[*] The problem is in asm()s that modify one of the inputs. This has been
marked by adding the input register to the clobber list, which is
illegal. The right way to do this is to set up a dummy variable that is
used as output, and marking the asm() as volatile.
> The asm code exists for increased performance on 386/486 machines when
> using nybble or byte modes (10-25%). There is almost no significant
> improvement between the asm and C code for 586 or higher machines. I am
> working on a patch to rectify the problem now and hopefully send it off
> in a couple of hours time.
No need, unless you are talking about some other problems unknown to me?
> This patch will require the use of egcc to obtain the performance on 386/486
> machines equivalent of the 2.1.132 driver, otherwise a slight performance
> degradation will occur (on these machines, every CPU cycle counts).
Why will it require egcs? AFAIKS, what is legal asm() for egcs is legal for
others too. Perhaps you'll need a specific binutils?
-- Horst von Brand email@example.com Casilla 9G, Viņa del Mar, Chile +56 32 672616
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to firstname.lastname@example.org Please read the FAQ at http://www.tux.org/lkml/
-- To unsubscribe, send mail to: email@example.com -- -- with the single word "unsubscribe" in the body of the message. --
This archive was generated by hypermail 2.0b3 on Tue 12 Jan 1999 - 09:54:52 EST