On Tue, Jul 31, 2001 at 10:06:35AM +0200, Kevin D. Kissell wrote:
Using mips-linux-gcc from egcs-2.91.66, I don't see exactly this
behavior in the test case above. I *do* see that *if* I have -mcpu=4600
set *and* I have not otherwise set the ISA level to be MIPS I or
MIPS II (-mips1, -mips2), 64-bit instructions will be emitted.
But that's to be expected.
No, it contradict the GCC documentation:
`-mcpu=CPU TYPE'
Assume the defaults for the machine type CPU TYPE when scheduling
instructions. The choices for CPU TYPE are `r2000', `r3000',
`r3900', `r4000', `r4100', `r4300', `r4400', `r4600', `r4650',
`r5000', `r6000', `r8000', and `orion'. Additionally, the
`r2000', `r3000', `r4000', `r5000', and `r6000' can be abbreviated
as `r2k' (or `r2K'), `r3k', etc. While picking a specific CPU
TYPE will schedule things appropriately for that particular chip,
the compiler will not generate any code that does not meet level 1
of the MIPS ISA (instruction set architecture) without a `-mipsX'
or `-mabi' switch being used.
To generate 32-bit code for an
R4600-like platform, you need to specify both the ISA level
(to deal with issues like the above) and the R4600 pipeline
(to get the MAD instruction).
No MAD on R4600. Again it would be in contradiction with above document-
ation. Mad you get with:
`-mmad'
`-mno-mad'
Permit use of the `mad', `madu' and `mul' instructions, as on the
`r4650' chip.
quoted
Is there a truly correct -mcpu option for a mips32 cpu?
It's "-mips32", which is sort of a -mips option and a -mcpu
option rolled into one. It's supported by several gnu distributions,
notably those of Algorithmics and Cygnus/Red Hat. I believe
that someone at MIPS or Algorithmics succeeded in building
a Linux kernel of some description using the Algorithmics
SDE, but I don't know the details.
Ralf