The following ‘-m’
options are defined for Motorola 88K architectures.
-m88000
Generate code that works
well on both the m88100 and the m88110.
-m88100
Generate code that works
best for the m88100, but that also runs on the m88110.
-m88110
Generate code that works
best for the m88110, and may not run on the m88100.
-mbig-pic
Obsolete option to be removed
from the next revision. Use -fPIC.
-midentify-revision
Include an ident
directive in the assembler output recording the source filename, compiler
name and version, timestamp, and compilation flags used.
-mno-underscores
In assembler output, emit
symbol names without adding an underscore character at the beginning of
each name. The default is to use an underscore as prefix on each name.
-mocs-debug-info
-mno-ocs-debug-info
Include (or omit) additional
debugging information (about registers used in each stack frame) as specified
in the 88open Object Compatibility Standard, OCS. This extra information
allows debugging of code that has had the frame pointer eliminated. The
default for DG/UX, SVr4, and Delta 88 SVr3.2 is to include this information;
other 88k configurations omit this information by default.
-mocs-frame-position
When emitting COFF debugging
information for automatic variables and parameters stored on the stack,
use the offset from the canonical frame a
ffb
ddress which is the stack pointer
(register 31) on entry to the function. The DG/UX, SVr4, Delta88 SVr3.2,
and BCS configurations use -mocs-frame-position;
other 88k configurations have the default, -mno-ocs-frame-position.
-mno-ocs-frame-position
When emitting COFF debugging
information for automatic variables and parameters stored on the stack,
use the offset from the frame pointer register (register 30). When this
option is in effect, the frame pointer is not eliminated when debugging
information is selected by the -g
switch.
-moptimize-arg-area
-mno-optimize-arg-area
Control how function arguments
are stored in stack frames.
-moptimize-arg-area
saves space by optimizing them, but this conflicts with the 88open specifications.
The opposite alternative, -mno-optimize-arg-area,
agrees with 88open standards. By default GNU CC does not optimize the argument
area.
-mshort-data-num
Generate smaller data references
by making them relative to r0,
which allows loading a value using a single instruction (rather than the
usual two). You control which data references are affected by specifying
num
with this option. For example, if you specify -mshort-data-512,
then the data references affected are those involving displacements of
less than 512 bytes. -mshort-data-num
is not effective for num
greater than 64k.
-mserialize-volatile
-mno-serialize-volatile
Do, or don’t, generate code
to guarantee sequential consistency of volatile memory references. By default,
consistency is guaranteed.
The order of memory references
made by the MC88110 processor does not always match the order of the instructions
requesting those references. In particular, a load instruction may execute
before a preceding store instruction. Such reordering violates sequential
consistency of volatile memory references, when there are multiple processors.
When consistency must be guaranteed, GNU C generates special instruct
ffb
ions,
as needed, to force execution in the proper order.
The MC88100 processor does not
reorder memory references and so always provides sequential consistency.
However, by default, GNU C generates the special instructions to guarantee
consistency even when you use -m88100,
so that the code may be run on an MC88110 processor. If you intend to run
your code only on the MC88100 processor, you may use -mno-serialize-volatile.
The extra code generated to
guarantee consistency may affect the performance of your application. If
you know that you can safely forgo this guarantee, you may use -mno-serialize-volatile.
-msvr4
-msvr3
Turn on (-msvr4)
or off (-msvr3)
compiler extensions related to System V release 4 (SVr4).
This controls the following
functionality.
Which variant of the assembler
syntax to emit.
-msvr4
makes the C preprocessor recognize ‘#pragma
weak’ that is
used on System V release 4.
-msvr4
makes GNU CC issue additional declaration directives used in SVr4.
-msvr4
is the default for the m88k-motorola-sysv4
and m88k-dg-dgux
M88K configurations. -msvr3
is the default for all other M88K configurations.
-mversion-03.00
This option is obsolete,
and is ignored.
-mno-check-zero-division
-mcheck-zero-division
Do, or don’t, generate code
to guarantee that integer division by zero will be detected. By default,
detection is guaranteed.
Some models of the MC88100
processor fail to trap upon integer division by zero under certain conditions.
By default, when compiling code that might be run on such a processor,
GNU C generates code that explicitly checks for zero-valued d
ffb
ivisors and
traps with exception number 503 when one is detected. Use of -mno-check-zero-division
suppresses such checking for code generated to run on an MC88100 processor.
GNU C assumes that the MC88110
processor correctly detects all instances of integer division by zero.
When -m88110
is specified, both
-mcheck-zero-division
and -mno-check-zero-division
are ignored, and no explicit checks for zero-valued divisors are generated.
-muse-div-instruction
Use the div
instruction for signed integer division on the MC88100 processor. By default,
the div
instruction is not used.
On the MC88100 processor
the signed integer division instruction div)
traps to the operating system on a negative operand. The operating system
transparently completes the operation, but at a large cost in execution
time. By default, when compiling code that might be run on an MC88100 processor,
GNU C emulates signed integer division using the unsigned integer division
instruction divu),
thereby avoiding the large penalty of a trap to the operating system. Such
emulation has its own, smaller, execution cost in both time and space.
To the extent that your code’s important signed integer division operations
are performed on two nonnegative operands, it may be desirable to use the
div
instruction directly.
On the MC88110 processor
the div
instruction (also known as the divs
instruction) processes negative operands with-out trapping to the operating
system. When -m88110
is specified, -muse-div-instruction
is ignored, and the div
instruction is used for signed integer division.
Note:
The result of dividing INT
MIN by -1
is undefined. In particular, the behavior of such a division with and with-out
-muse-div-instruction
may differ.
-mtrap-large-shift
-mhandle-large-shift
Include code to detect bit-shifts
of more than 31 bits; respectively, trap such shifts or emit code to handle
them properly. By default GNU CC makes no special provision for large bit
shifts.
-mwarn-passed-structs
Warn when a function passes
a struct as an argument or result. Structure-passing conventions have changed
during the evolution of the C language, and are often the source of portability
problems. By default, GNU CC issues no such warning.