unsigned long mips_gprmask;
unsigned long mips_cprmask[4];
-/* MIPS ISA (Instruction Set Architecture) level. */
+/* MIPS ISA (Instruction Set Architecture) level (may be changed
+ temporarily using .set mipsN). */
static int mips_isa = -1;
+/* MIPS ISA we are using for this output file. */
+static int file_mips_isa;
+
/* MIPS PIC level. 0 is normal, non-PIC code. 2 means to generate
SVR4 ABI PIC calls. 1 doesn't mean anything. */
static int mips_pic;
if (! ok)
as_warn ("Could not set architecture and machine");
+ file_mips_isa = mips_isa;
+
op_hash = hash_new ();
for (i = 0; i < NUMOPCODES;)
{
mips_nobopt = 1;
}
+ else if (strncmp (name, "mips", 4) == 0)
+ {
+ int isa;
+
+ /* Permit the user to change the ISA on the fly. Needless to
+ say, misuse can cause serious problems. */
+ isa = atoi (name + 4);
+ if (isa == 0)
+ mips_isa = file_mips_isa;
+ else if (isa < 1 || isa > 3)
+ as_bad ("unknown ISA level");
+ else
+ mips_isa = isa;
+ }
else
{
as_warn ("Tried to set unrecognized symbol: %s\n", name);
[ -l ] [ -m68000 | -m68010 | -m68020 | ... ]
@end ifset
@ifset MIPS
- [ -nocpp ] [ -EL ] [ -EB ] [ -G @var{num} ]
+ [ -nocpp ] [ -EL ] [ -EB ] [ -G @var{num} ] [ -mips1 ] [ -mips2 ] [ -mips3 ]
@end ifset
[ -- | @var{files} @dots{} ]
@end smallexample
@ifset MIPS
The following options are available when @value{AS} is configured for
-the MIPS R2000/R3000 processors.
+the MIPS R2000/R3000/R4000/R6000 processors.
@table @code
@item -G @var{num}
@cindex little endian output, MIPS
Generate ``little endian'' format output.
+@cindex MIPS ISA
+@item -mips1
+@item -mips2
+@item -mips3
+Generate code for a particular MIPS Instruction Set Architecture level. -mips1
+corresponds to the @sc{r2000} and @sc{r3000} processors, -mips2 to the
+@sc{r6000} processor, and -mips3 to the @sc{r4000} processor.
+
@item -nocpp
This option is ignored. It is accepted for compatibility with the native
tools.
@cindex MIPS R2000
@cindex MIPS R3000
+@cindex MIPS R4000
+@cindex MIPS R6000
@sc{gnu} @code{@value{AS}} for @sc{mips} architectures supports the @sc{mips}
-@sc{r2000} and @sc{r3000} processors. For information about the @sc{mips}
-instruction set, see @cite{MIPS RISC Architecture}, by Kane and Heindrich
-(Prentice-Hall).
+@sc{r2000}, @sc{r3000}, @sc{r4000} and @sc{r6000} processors. For information
+about the @sc{mips} instruction set, see @cite{MIPS RISC Architecture}, by Kane
+and Heindrich (Prentice-Hall).
@menu
* MIPS Opts:: Assembler options
* MIPS Object:: ECOFF object code
* MIPS Stabs:: Directives for debugging information
+* MIPS ISA:: Directives to override the ISA level
@end menu
@node MIPS Opts
support C++ debugging). These directives are primarily used by compilers, not
assembly language programmers!
+@node MIPS ISA
+@section Directives to override the ISA level
+
+@cindex MIPS ISA override
+@sc{mips} @code{@value{AS}} supports an additional directive to change the
+@sc{mips} Instruction Set Architecture level on the fly. This is not supported
+by traditional @sc{mips} assemblers. The directive is @code{.set mips@var{N}}.
+@var{N} should be a number from 0 to 3. A value from 1 to 3 will cause gas to
+start accepting instructions for the given ISA level; this affects not only
+which instructions are permitted, but also how certain macros are expanded.
+@code{.set mips0} will set the ISA level back to that set by the command line
+options, if any, or otherwise to the default for the configuration. This
+feature may be used to permit specific r4000 instructions while assembling in
+32 bit mode. It must be used with care.
+
@end ifset
@ifset GENERIC
Ian Lance Taylor of Cygnus Support merged the Motorola and MIT syntax for the
68k, completed support for some COFF targets (68k, i386 SVR3, and SCO Unix),
-and made a few other minor patches.
+added support for MIPS ECOFF and ELF targets, and made a few other minor
+patches.
Steve Chamberlain made @code{@value{AS}} able to generate listings.