MeP Options#

-mabsdiff#

Enables the abs instruction, which is the absolute difference between two registers.

-mall-opts#

Enables all the optional instructions—average, multiply, divide, bit operations, leading zero, absolute difference, min/max, clip, and saturation.

-maverage#

Enables the ave instruction, which computes the average of two registers.

-mbased=n#

Variables of size n bytes or smaller are placed in the .based section by default. Based variables use the $tp register as a base register, and there is a 128-byte limit to the .based section.

-mbitops#

Enables the bit operation instructions—bit test (btstm), set (bsetm), clear (bclrm), invert (bnotm), and test-and-set (tas).

-mc=name#

Selects which section constant data is placed in. name may be tiny, near, or far.

-mclip#

Enables the clip instruction. Note that -mclip is not useful unless you also provide -mminmax.

-mconfig=name#

Selects one of the built-in core configurations. Each MeP chip has one or more modules in it; each module has a core CPU and a variety of coprocessors, optional instructions, and peripherals. The MeP-Integrator tool, not part of GCC, provides these configurations through this option; using this option is the same as using all the corresponding command-line options. The default configuration is default.

-mcop#

Enables the coprocessor instructions. By default, this is a 32-bit coprocessor. Note that the coprocessor is normally enabled via the -mconfig= option.

-mcop32#

Enables the 32-bit coprocessor’s instructions.

-mcop64#

Enables the 64-bit coprocessor’s instructions.

-mivc2#

Enables IVC2 scheduling. IVC2 is a 64-bit VLIW coprocessor.

-mdc#

Causes constant variables to be placed in the .near section.

-mdiv#

Enables the div and divu instructions.

-meb#

Generate big-endian code.

-mel#

Generate little-endian code.

-mio-volatile#

Tells the compiler that any variable marked with the io attribute is to be considered volatile.

-ml#

Causes variables to be assigned to the .far section by default.

-mleadz#

Enables the leadz (leading zero) instruction.

-mm#

Causes variables to be assigned to the .near section by default.

-mminmax#

Enables the min and max instructions.

-mmult#

Enables the multiplication and multiply-accumulate instructions.

-mno-opts#

Disables all the optional instructions enabled by -mall-opts.

-mrepeat#

Enables the repeat and erepeat instructions, used for low-overhead looping.

-ms#

Causes all variables to default to the .tiny section. Note that there is a 65536-byte limit to this section. Accesses to these variables use the %gp base register.

-msatur#

Enables the saturation instructions. Note that the compiler does not currently generate these itself, but this option is included for compatibility with other tools, like as.

-msdram#

Link the SDRAM-based runtime instead of the default ROM-based runtime.

-msim#

Link the simulator run-time libraries.

-msimnovec#

Link the simulator runtime libraries, excluding built-in support for reset and exception vectors and tables.

-mtf#

Causes all functions to default to the .far section. Without this option, functions default to the .near section.

-mtiny=n#

Variables that are n bytes or smaller are allocated to the .tiny section. These variables use the $gp base register. The default for this option is 4, but note that there’s a 65536-byte limit to the .tiny section.