msim
Target
Use simulator runtime.

mtiny-printf
Target Mask(TINY_PRINTF)
Use a lightweight configuration of printf and puts to reduce code size. For single-threaded applications, not requiring reentrant I/O only. Requires Newlib Nano IO.

masm-hex
Target Mask(ASM_HEX)
Force assembly output to always use hex constants.

mmcu=
Target ToLower Joined RejectNegative Var(target_mcu)
Specify the MCU to build for.

mwarn-mcu
Target Var(msp430_warn_mcu) Init(1)
Warn if an MCU name is unrecognized or conflicts with other options (default: on).

mwarn-devices-csv
Target Var(msp430_warn_devices_csv) Init(1)
Warn if devices.csv is not found or there are problem parsing it (default: on).

mcpu=
Target Joined RejectNegative Var(target_cpu) ToLower Enum(msp430_cpu_types) Init(MSP430_CPU_MSP430X_DEFAULT)
Specify the ISA to build for: msp430, msp430x, msp430xv2.

Enum
Name(msp430_cpu_types) Type(enum msp430_cpu_types)

EnumValue
Enum(msp430_cpu_types) String(msp430) Value(MSP430_CPU_MSP430) Canonical

EnumValue
Enum(msp430_cpu_types) String(430) Value(MSP430_CPU_MSP430)

EnumValue
Enum(msp430_cpu_types) String(msp430x) Value(MSP430_CPU_MSP430X) Canonical

EnumValue
Enum(msp430_cpu_types) String(430x) Value(MSP430_CPU_MSP430X)

EnumValue
Enum(msp430_cpu_types) String(msp430xv2) Value(MSP430_CPU_MSP430XV2) Canonical

EnumValue
Enum(msp430_cpu_types) String(430xv2) Value(MSP430_CPU_MSP430XV2)

mlarge
Target Mask(LARGE) RejectNegative
Select large model - 20-bit addresses/pointers.

msmall
Target InverseMask(LARGE) RejectNegative
Select small model - 16-bit addresses/pointers (default).

mrelax
Target
Optimize opcode sizes at link time.

mOs
Target Undocumented Mask(OPT_SPACE)

minrt
Target Mask(MINRT) RejectNegative
Use a minimum runtime (no static initializers or ctors) for memory-constrained devices.

HeaderInclude
config/msp430/msp430-opts.h

mhwmult=
Target Joined RejectNegative ToLower Var(msp430_hwmult_type) Enum(msp430_hwmult_types) Init(MSP430_HWMULT_AUTO)
Specify the type of hardware multiply to support.

Enum
Name(msp430_hwmult_types) Type(enum msp430_hwmult_types)

EnumValue
Enum(msp430_hwmult_types) String(none) Value(MSP430_HWMULT_NONE)

EnumValue
Enum(msp430_hwmult_types) String(auto) Value(MSP430_HWMULT_AUTO)

EnumValue
Enum(msp430_hwmult_types) String(16bit) Value(MSP430_HWMULT_SMALL)

EnumValue
Enum(msp430_hwmult_types) String(32bit) Value(MSP430_HWMULT_LARGE)

EnumValue
Enum(msp430_hwmult_types) String(f5series) Value(MSP430_HWMULT_F5SERIES)

mcode-region=
Target Joined RejectNegative ToLower Var(msp430_code_region) Enum(msp430_regions) Init(MSP430_REGION_LOWER)
Specify whether functions should be placed into the lower or upper memory regions, or if they should be shuffled between the regions (either) for best fit (default: lower).

mdata-region=
Target Joined RejectNegative ToLower Var(msp430_data_region) Enum(msp430_regions) Init(MSP430_REGION_LOWER)
Specify whether variables should be placed into the lower or upper memory regions, or if they should be shuffled between the regions (either) for best fit (default: lower).

muse-lower-region-prefix
Target Mask(USE_LOWER_REGION_PREFIX)
Add the .lower prefix to section names when compiling with -m{code,data}-region=lower (disabled by default).

Enum
Name(msp430_regions) Type(enum msp430_regions)

EnumValue
Enum(msp430_regions) String(none) Value(MSP430_REGION_ANY)

EnumValue
Enum(msp430_regions) String(either) Value(MSP430_REGION_EITHER)

EnumValue
Enum(msp430_regions) String(lower) Value(MSP430_REGION_LOWER)

EnumValue
Enum(msp430_regions) String(upper) Value(MSP430_REGION_UPPER)

msilicon-errata=
Target Joined RejectNegative ToLower
Passes on a request to the assembler to enable fixes for various silicon errata.

msilicon-errata-warn=
Target Joined RejectNegative ToLower
Passes on a request to the assembler to warn about various silicon errata.

mdevices-csv-loc=
Target Joined Var(msp430_devices_csv_loc) RejectNegative
The path to devices.csv.  The GCC driver can normally locate devices.csv itself
and pass this option to the compiler, so the user shouldn't need to pass this.

mmax-inline-shift=
Target RejectNegative Joined UInteger IntegerRange(0,65) Var(msp430_max_inline_shift) Init(65)
For shift operations by a constant amount, which require an individual instruction to shift by one
position, set the maximum number of inline shift instructions (maximum value 64) to emit instead of using the corresponding __mspabi helper function.
The default value is 4.
