Node:S/390 and zSeries Options, Next:CRIS Options, Previous:D30V Options, Up:Submodel Options

#### S/390 and zSeries Options

These are the `-m` options defined for the S/390 and zSeries architecture.

`-mhard-float`
`-msoft-float`
  Use (do not use) the hardware floating-point instructions and registers for floating-point operations. When `-msoft-float` is specified, functions in `libgcc.a` will be used to perform floating-point operations. When `-mhard-float` is specified, the compiler generates IEEE floating-point instructions. This is the default.
`-mbackchain`
`-mno-backchain`
  Generate (or do not generate) code which maintains an explicit backchain within the stack frame that points to the caller's frame. This is currently needed to allow debugging. The default is to generate the backchain.
`-msmall-exec`
`-mno-small-exec`
  Generate (or do not generate) code using the `bras` instruction to do subroutine calls. This only works reliably if the total executable size does not exceed 64k. The default is to use the `basr` instruction instead, which does not have this limitation.
`-m64`
`-m31`
  When `-m31` is specified, generate code compliant to the Linux for S/390 ABI. When `-m64` is specified, generate code compliant to the Linux for zSeries ABI. This allows GCC in particular to generate 64-bit instructions. For the `s390` targets, the default is `-m31`, while the `s390x` targets default to `-m64`.
`-mmvcle`
`-mno-mvcle`
  Generate (or do not generate) code using the `mvcle` instruction to perform block moves. When `-mno-mvcle` is specified, use a `mvc` loop instead. This is the default.
`-mdebug`
`-mno-debug`
  Print (or do not print) additional debug information when compiling. The default is to not print debug information.