#### 3.17.5 CRIS Options

These options are defined specifically for the CRIS ports.

`-march=`architecture-type
`-mcpu=`architecture-type
  Generate code for the specified architecture. The choices for architecture-type are ‘`v3`’, ‘`v8`’ and ‘`v10`’ for respectively ETRAX 4, ETRAX 100, and ETRAX 100 LX. Default is ‘`v0`’ except for cris-axis-linux-gnu, where the default is ‘`v10`’.
`-mtune=`architecture-type
  Tune to architecture-type everything applicable about the generated code, except for the ABI and the set of available instructions. The choices for architecture-type are the same as for `-march=architecture-type`.
`-mmax-stack-frame=`n
  Warn when the stack frame of a function exceeds n bytes.
`-metrax4`
`-metrax100`
  The options `-metrax4` and `-metrax100` are synonyms for `-march=v3` and `-march=v8` respectively.
`-mmul-bug-workaround`
`-mno-mul-bug-workaround`
  Work around a bug in the `muls` and `mulu` instructions for CPU models where it applies. This option is active by default.
`-mpdebug`
  Enable CRIS-specific verbose debug-related information in the assembly code. This option also has the effect to turn off the ‘`#NO_APP`’ formatted-code indicator to the assembler at the beginning of the assembly file.
`-mcc-init`
  Do not use condition-code results from previous instruction; always emit compare and test instructions before use of condition codes.
`-mno-side-effects`
  Do not emit instructions with side-effects in addressing modes other than post-increment.
`-mstack-align`
`-mno-stack-align`
`-mdata-align`
`-mno-data-align`
`-mconst-align`
`-mno-const-align`
  These options (no-options) arranges (eliminate arrangements) for the stack-frame, individual data and constants to be aligned for the maximum single data access size for the chosen CPU model. The default is to arrange for 32-bit alignment. ABI details such as structure layout are not affected by these options.
`-m32-bit`
`-m16-bit`
`-m8-bit`
  Similar to the stack- data- and const-align options above, these options arrange for stack-frame, writable data and constants to all be 32-bit, 16-bit or 8-bit aligned. The default is 32-bit alignment.
`-mno-prologue-epilogue`
`-mprologue-epilogue`
  With `-mno-prologue-epilogue`, the normal function prologue and epilogue that sets up the stack-frame are omitted and no return instructions or return sequences are generated in the code. Use this option only together with visual inspection of the compiled code: no warnings or errors are generated when call-saved registers must be saved, or storage for local variable needs to be allocated.
`-mno-gotplt`
`-mgotplt`
  With `-fpic` and `-fPIC`, don't generate (do generate) instruction sequences that load addresses for functions from the PLT part of the GOT rather than (traditional on other architectures) calls to the PLT. The default is `-mgotplt`.
`-melf`
  Legacy no-op option only recognized with the cris-axis-elf and cris-axis-linux-gnu targets.
`-mlinux`
  Legacy no-op option only recognized with the cris-axis-linux-gnu target.
`-sim`
  This option, recognized for the cris-axis-elf arranges to link with input-output functions from a simulator library. Code, initialized data and zero-initialized data are allocated consecutively.
`-sim2`
  Like `-sim`, but pass linker options to locate initialized data at 0x40000000 and zero-initialized data at 0x80000000.