These are the -m options defined for M680x0 and ColdFire processors. The default settings depend on which architecture was selected when the compiler was configured; the defaults for the most common choices are given below.
-march=
arch
Generate code for a specific M680x0 or ColdFire instruction set architecture. Permissible values of arch for M680x0 architectures are: 68000, 68010, 68020, 68030, 68040, 68060 and cpu32. ColdFire architectures are selected according to Freescale's ISA classification and the permissible values are: isaa, isaaplus, isab and isac.
gcc defines a macro __mcf arch __ whenever it is generating code for a ColdFire target. The arch in this macro is one of the -march arguments given above.
When used together, -march and -mtune select code
that runs on a family of similar processors but that is optimized
for a particular microarchitecture.
-mcpu=
cpu
Generate code for a specific M680x0 or ColdFire processor. The M680x0 cpus are: 68000, 68010, 68020, 68030, 68040, 68060, 68302, 68332 and cpu32. The ColdFire cpus are given by the table below, which also classifies the CPUs into families:
Family |
-mcpu
arguments
|
51qe |
51qe
|
5206 |
5202
5204
5206
|
5206e |
5206e
|
5208 |
5207
5208
|
5211a |
5210a
5211a
|
5213 |
5211
5212
5213
|
5216 |
5214
5216
|
52235 |
52230
52231
52232
52233
52234
52235
|
5225 |
5224
5225
|
5235 |
5232
5233
5234
5235
523x
|
5249 |
5249
|
5250 |
5250
|
5271 |
5270
5271
|
5272 |
5272
|
5275 |
5274
5275
|
5282 |
5280
5281
5282
528x
|
5307 |
5307
|
5329 |
5327
5328
5329
532x
|
5373 |
5372
5373
537x
|
5407 |
5407
|
5475 |
5470
5471
5472
5473
5474
5475
547x
5480
5481
5482
5483
5484
5485
|
-mcpu= cpu overrides -march= arch if arch is compatible with cpu. Other combinations of -mcpu and -march are rejected.
gcc defines the macro __mcf_cpu_
cpu when ColdFire target
cpu is selected. It also defines __mcf_family_
family,
where the value of family is given by the table above.
-mtune=
tune
Tune the code for a particular microarchitecture, within the constraints set by -march and -mcpu. The M680x0 microarchitectures are: 68000, 68010, 68020, 68030, 68040, 68060 and cpu32. The ColdFire microarchitectures are: cfv1, cfv2, cfv3, cfv4 and cfv4e.
You can also use -mtune=68020-40 for code that needs to run relatively well on 68020, 68030 and 68040 targets. -mtune=68020-60 is similar but includes 68060 targets as well. These two options select the same tuning decisions as -m68020-40 and -m68020-60 respectively.
gcc defines the macros __mc arch and __mc arch __ when tuning for 680x0 architecture arch. It also defines mc arch unless either -ansi or a non-GNU -std option is used. If gcc is tuning for a range of architectures, as selected by -mtune=68020-40 or -mtune=68020-60, it defines the macros for every architecture in the range.
gcc also defines the macro __m
uarch
__ when tuning for
ColdFire microarchitecture uarch, where uarch is one
of the arguments given above.
-m68000
-mc68000
Generate output for a 68000. This is the default when the compiler is configured for 68000-based systems. It is equivalent to -march=68000.
Use this option for microcontrollers with a 68000 or EC000 core,
including the 68008, 68302, 68306, 68307, 68322, 68328 and 68356.
-m68010
Generate output for a 68010. This is the default
when the compiler is configured for 68010-based systems.
It is equivalent to -march=68010.
-m68020
-mc68020
Generate output for a 68020. This is the default
when the compiler is configured for 68020-based systems.
It is equivalent to -march=68020.
-m68030
Generate output for a 68030. This is the default when the compiler is
configured for 68030-based systems. It is equivalent to
-march=68030.
-m68040
Generate output for a 68040. This is the default when the compiler is configured for 68040-based systems. It is equivalent to -march=68040.
This option inhibits the use of 68881/68882 instructions that have to be
emulated by software on the 68040. Use this option if your 68040 does not
have code to emulate those instructions.
-m68060
Generate output for a 68060. This is the default when the compiler is configured for 68060-based systems. It is equivalent to -march=68060.
This option inhibits the use of 68020 and 68881/68882 instructions that
have to be emulated by software on the 68060. Use this option if your 68060
does not have code to emulate those instructions.
-mcpu32
Generate output for a CPU32. This is the default when the compiler is configured for CPU32-based systems. It is equivalent to -march=cpu32.
Use this option for microcontrollers with a
CPU32 or CPU32+ core, including the 68330, 68331, 68332, 68333, 68334,
68336, 68340, 68341, 68349 and 68360.
-m5200
Generate output for a 520X ColdFire CPU. This is the default when the compiler is configured for 520X-based systems. It is equivalent to -mcpu=5206, and is now deprecated in favor of that option.
Use this option for microcontroller with a 5200 core, including
the MCF5202, MCF5203, MCF5204 and MCF5206.
-m5206e
Generate output for a 5206e ColdFire CPU. The option is now
deprecated in favor of the equivalent -mcpu=5206e.
-m528x
Generate output for a member of the ColdFire 528X family.
The option is now deprecated in favor of the equivalent
-mcpu=528x.
-m5307
Generate output for a ColdFire 5307 CPU. The option is now deprecated
in favor of the equivalent -mcpu=5307.
-m5407
Generate output for a ColdFire 5407 CPU. The option is now deprecated
in favor of the equivalent -mcpu=5407.
-mcfv4e
Generate output for a ColdFire V4e family CPU (e.g. 547x/548x).
This includes use of hardware floating point instructions.
The option is equivalent to -mcpu=547x, and is now
deprecated in favor of that option.
-m68020-40
Generate output for a 68040, without using any of the new instructions. This results in code which can run relatively efficiently on either a 68020/68881 or a 68030 or a 68040. The generated code does use the 68881 instructions that are emulated on the 68040.
The option is equivalent to -march=68020
-mtune=68020-40.
-m68020-60
Generate output for a 68060, without using any of the new instructions. This results in code which can run relatively efficiently on either a 68020/68881 or a 68030 or a 68040. The generated code does use the 68881 instructions that are emulated on the 68060.
The option is equivalent to -march=68020
-mtune=68020-60.
-mhard-float
-m68881
Generate floating-point instructions. This is the default for 68020
and above, and for ColdFire devices that have an FPU. It defines the
macro __HAVE_68881__ on M680x0 targets and __mcffpu__
on ColdFire targets.
-msoft-float
Do not generate floating-point instructions; use library calls instead.
This is the default for 68000, 68010, and 68832 targets. It is also
the default for ColdFire devices that have no FPU.
-mdiv
-mno-div
Generate (do not generate) ColdFire hardware divide and remainder instructions. If -march is used without -mcpu, the default is “on” for ColdFire architectures and “off” for M680x0 architectures. Otherwise, the default is taken from the target CPU (either the default CPU, or the one specified by -mcpu). For example, the default is “off” for -mcpu=5206 and “on” for -mcpu=5206e.
gcc defines the macro __mcfhwdiv__ when this option is enabled.
-mshort
Consider type int
to be 16 bits wide, like short int
.
Additionally, parameters passed on the stack are also aligned to a
16-bit boundary even on targets whose API mandates promotion to 32-bit.
-mno-short
Do not consider type int
to be 16 bits wide. This is the default.
-mnobitfield
-mno-bitfield
Do not use the bit-field instructions. The -m68000, -mcpu32
and -m5200 options imply -mnobitfield
.
-mbitfield
Do use the bit-field instructions. The -m68020 option implies
-mbitfield. This is the default if you use a configuration
designed for a 68020.
-mrtd
Use a different function-calling convention, in which functions
that take a fixed number of arguments return with the rtd
instruction, which pops their arguments while returning. This
saves one instruction in the caller since there is no need to pop
the arguments there.
This calling convention is incompatible with the one normally used on Unix, so you cannot use it if you need to call libraries compiled with the Unix compiler.
Also, you must provide function prototypes for all functions that
take variable numbers of arguments (including printf
);
otherwise incorrect code will be generated for calls to those
functions.
In addition, seriously incorrect code will result if you call a function with too many arguments. (Normally, extra arguments are harmlessly ignored.)
The rtd
instruction is supported by the 68010, 68020, 68030,
68040, 68060 and CPU32 processors, but not by the 68000 or 5200.
-mno-rtd
Do not use the calling conventions selected by -mrtd.
This is the default.
-malign-int
-mno-align-int
Control whether GCC aligns int
, long
, long long
,
float
, double
, and long double
variables on a 32-bit
boundary (-malign-int) or a 16-bit boundary (-mno-align-int).
Aligning variables on 32-bit boundaries produces code that runs somewhat
faster on processors with 32-bit busses at the expense of more memory.
Warning: if you use the -malign-int switch, GCC will
align structures containing the above types differently than
most published application binary interface specifications for the m68k.
-mpcrel
Use the pc-relative addressing mode of the 68000 directly, instead of
using a global offset table. At present, this option implies -fpic,
allowing at most a 16-bit offset for pc-relative addressing. -fPIC is
not presently supported with -mpcrel, though this could be supported for
68020 and higher processors.
-mno-strict-align
-mstrict-align
Do not (do) assume that unaligned memory references will be handled by
the system.
-msep-data
-mno-sep-data
-mid-shared-library
-mno-id-shared-library
-mshared-library-id=n