• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-armeabi-2013.11/share/doc/arm-arm-none-eabi/html/gcc/
1<html lang="en">
2<head>
3<title>S/390 and zSeries Options - Using the GNU Compiler Collection (GCC)</title>
4<meta http-equiv="Content-Type" content="text/html">
5<meta name="description" content="Using the GNU Compiler Collection (GCC)">
6<meta name="generator" content="makeinfo 4.13">
7<link title="Top" rel="start" href="index.html#Top">
8<link rel="up" href="Submodel-Options.html#Submodel-Options" title="Submodel Options">
9<link rel="prev" href="RX-Options.html#RX-Options" title="RX Options">
10<link rel="next" href="Score-Options.html#Score-Options" title="Score Options">
11<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
12<!--
13Copyright (C) 1988-2013 Free Software Foundation, Inc.
14
15Permission is granted to copy, distribute and/or modify this document
16under the terms of the GNU Free Documentation License, Version 1.3 or
17any later version published by the Free Software Foundation; with the
18Invariant Sections being ``Funding Free Software'', the Front-Cover
19Texts being (a) (see below), and with the Back-Cover Texts being (b)
20(see below).  A copy of the license is included in the section entitled
21``GNU Free Documentation License''.
22
23(a) The FSF's Front-Cover Text is:
24
25     A GNU Manual
26
27(b) The FSF's Back-Cover Text is:
28
29     You have freedom to copy and modify this GNU Manual, like GNU
30     software.  Copies published by the Free Software Foundation raise
31     funds for GNU development.-->
32<meta http-equiv="Content-Style-Type" content="text/css">
33<style type="text/css"><!--
34  pre.display { font-family:inherit }
35  pre.format  { font-family:inherit }
36  pre.smalldisplay { font-family:inherit; font-size:smaller }
37  pre.smallformat  { font-family:inherit; font-size:smaller }
38  pre.smallexample { font-size:smaller }
39  pre.smalllisp    { font-size:smaller }
40  span.sc    { font-variant:small-caps }
41  span.roman { font-family:serif; font-weight:normal; } 
42  span.sansserif { font-family:sans-serif; font-weight:normal; } 
43--></style>
44<link rel="stylesheet" type="text/css" href="../cs.css">
45</head>
46<body>
47<div class="node">
48<a name="S%2f390-and-zSeries-Options"></a>
49<a name="S_002f390-and-zSeries-Options"></a>
50<p>
51Next:&nbsp;<a rel="next" accesskey="n" href="Score-Options.html#Score-Options">Score Options</a>,
52Previous:&nbsp;<a rel="previous" accesskey="p" href="RX-Options.html#RX-Options">RX Options</a>,
53Up:&nbsp;<a rel="up" accesskey="u" href="Submodel-Options.html#Submodel-Options">Submodel Options</a>
54<hr>
55</div>
56
57<h4 class="subsection">3.17.36 S/390 and zSeries Options</h4>
58
59<p><a name="index-S_002f390-and-zSeries-Options-2093"></a>
60These are the &lsquo;<samp><span class="samp">-m</span></samp>&rsquo; options defined for the S/390 and zSeries architecture.
61
62     <dl>
63<dt><code>-mhard-float</code><dt><code>-msoft-float</code><dd><a name="index-mhard_002dfloat-2094"></a><a name="index-msoft_002dfloat-2095"></a>Use (do not use) the hardware floating-point instructions and registers
64for floating-point operations.  When <samp><span class="option">-msoft-float</span></samp> is specified,
65functions in <samp><span class="file">libgcc.a</span></samp> are used to perform floating-point
66operations.  When <samp><span class="option">-mhard-float</span></samp> is specified, the compiler
67generates IEEE floating-point instructions.  This is the default.
68
69     <br><dt><code>-mhard-dfp</code><dt><code>-mno-hard-dfp</code><dd><a name="index-mhard_002ddfp-2096"></a><a name="index-mno_002dhard_002ddfp-2097"></a>Use (do not use) the hardware decimal-floating-point instructions for
70decimal-floating-point operations.  When <samp><span class="option">-mno-hard-dfp</span></samp> is
71specified, functions in <samp><span class="file">libgcc.a</span></samp> are used to perform
72decimal-floating-point operations.  When <samp><span class="option">-mhard-dfp</span></samp> is
73specified, the compiler generates decimal-floating-point hardware
74instructions.  This is the default for <samp><span class="option">-march=z9-ec</span></samp> or higher.
75
76     <br><dt><code>-mlong-double-64</code><dt><code>-mlong-double-128</code><dd><a name="index-mlong_002ddouble_002d64-2098"></a><a name="index-mlong_002ddouble_002d128-2099"></a>These switches control the size of <code>long double</code> type. A size
77of 64 bits makes the <code>long double</code> type equivalent to the <code>double</code>
78type. This is the default.
79
80     <br><dt><code>-mbackchain</code><dt><code>-mno-backchain</code><dd><a name="index-mbackchain-2100"></a><a name="index-mno_002dbackchain-2101"></a>Store (do not store) the address of the caller's frame as backchain pointer
81into the callee's stack frame. 
82A backchain may be needed to allow debugging using tools that do not understand
83DWARF 2 call frame information. 
84When <samp><span class="option">-mno-packed-stack</span></samp> is in effect, the backchain pointer is stored
85at the bottom of the stack frame; when <samp><span class="option">-mpacked-stack</span></samp> is in effect,
86the backchain is placed into the topmost word of the 96/160 byte register
87save area.
88
89     <p>In general, code compiled with <samp><span class="option">-mbackchain</span></samp> is call-compatible with
90code compiled with <samp><span class="option">-mmo-backchain</span></samp>; however, use of the backchain
91for debugging purposes usually requires that the whole binary is built with
92<samp><span class="option">-mbackchain</span></samp>.  Note that the combination of <samp><span class="option">-mbackchain</span></samp>,
93<samp><span class="option">-mpacked-stack</span></samp> and <samp><span class="option">-mhard-float</span></samp> is not supported.  In order
94to build a linux kernel use <samp><span class="option">-msoft-float</span></samp>.
95
96     <p>The default is to not maintain the backchain.
97
98     <br><dt><code>-mpacked-stack</code><dt><code>-mno-packed-stack</code><dd><a name="index-mpacked_002dstack-2102"></a><a name="index-mno_002dpacked_002dstack-2103"></a>Use (do not use) the packed stack layout.  When <samp><span class="option">-mno-packed-stack</span></samp> is
99specified, the compiler uses the all fields of the 96/160 byte register save
100area only for their default purpose; unused fields still take up stack space. 
101When <samp><span class="option">-mpacked-stack</span></samp> is specified, register save slots are densely
102packed at the top of the register save area; unused space is reused for other
103purposes, allowing for more efficient use of the available stack space. 
104However, when <samp><span class="option">-mbackchain</span></samp> is also in effect, the topmost word of
105the save area is always used to store the backchain, and the return address
106register is always saved two words below the backchain.
107
108     <p>As long as the stack frame backchain is not used, code generated with
109<samp><span class="option">-mpacked-stack</span></samp> is call-compatible with code generated with
110<samp><span class="option">-mno-packed-stack</span></samp>.  Note that some non-FSF releases of GCC 2.95 for
111S/390 or zSeries generated code that uses the stack frame backchain at run
112time, not just for debugging purposes.  Such code is not call-compatible
113with code compiled with <samp><span class="option">-mpacked-stack</span></samp>.  Also, note that the
114combination of <samp><span class="option">-mbackchain</span></samp>,
115<samp><span class="option">-mpacked-stack</span></samp> and <samp><span class="option">-mhard-float</span></samp> is not supported.  In order
116to build a linux kernel use <samp><span class="option">-msoft-float</span></samp>.
117
118     <p>The default is to not use the packed stack layout.
119
120     <br><dt><code>-msmall-exec</code><dt><code>-mno-small-exec</code><dd><a name="index-msmall_002dexec-2104"></a><a name="index-mno_002dsmall_002dexec-2105"></a>Generate (or do not generate) code using the <code>bras</code> instruction
121to do subroutine calls. 
122This only works reliably if the total executable size does not
123exceed 64k.  The default is to use the <code>basr</code> instruction instead,
124which does not have this limitation.
125
126     <br><dt><code>-m64</code><dt><code>-m31</code><dd><a name="index-m64-2106"></a><a name="index-m31-2107"></a>When <samp><span class="option">-m31</span></samp> is specified, generate code compliant to the
127GNU/Linux for S/390 ABI.  When <samp><span class="option">-m64</span></samp> is specified, generate
128code compliant to the GNU/Linux for zSeries ABI.  This allows GCC in
129particular to generate 64-bit instructions.  For the &lsquo;<samp><span class="samp">s390</span></samp>&rsquo;
130targets, the default is <samp><span class="option">-m31</span></samp>, while the &lsquo;<samp><span class="samp">s390x</span></samp>&rsquo;
131targets default to <samp><span class="option">-m64</span></samp>.
132
133     <br><dt><code>-mzarch</code><dt><code>-mesa</code><dd><a name="index-mzarch-2108"></a><a name="index-mesa-2109"></a>When <samp><span class="option">-mzarch</span></samp> is specified, generate code using the
134instructions available on z/Architecture. 
135When <samp><span class="option">-mesa</span></samp> is specified, generate code using the
136instructions available on ESA/390.  Note that <samp><span class="option">-mesa</span></samp> is
137not possible with <samp><span class="option">-m64</span></samp>. 
138When generating code compliant to the GNU/Linux for S/390 ABI,
139the default is <samp><span class="option">-mesa</span></samp>.  When generating code compliant
140to the GNU/Linux for zSeries ABI, the default is <samp><span class="option">-mzarch</span></samp>.
141
142     <br><dt><code>-mmvcle</code><dt><code>-mno-mvcle</code><dd><a name="index-mmvcle-2110"></a><a name="index-mno_002dmvcle-2111"></a>Generate (or do not generate) code using the <code>mvcle</code> instruction
143to perform block moves.  When <samp><span class="option">-mno-mvcle</span></samp> is specified,
144use a <code>mvc</code> loop instead.  This is the default unless optimizing for
145size.
146
147     <br><dt><code>-mdebug</code><dt><code>-mno-debug</code><dd><a name="index-mdebug-2112"></a><a name="index-mno_002ddebug-2113"></a>Print (or do not print) additional debug information when compiling. 
148The default is to not print debug information.
149
150     <br><dt><code>-march=</code><var>cpu-type</var><dd><a name="index-march-2114"></a>Generate code that runs on <var>cpu-type</var>, which is the name of a system
151representing a certain processor type.  Possible values for
152<var>cpu-type</var> are &lsquo;<samp><span class="samp">g5</span></samp>&rsquo;, &lsquo;<samp><span class="samp">g6</span></samp>&rsquo;, &lsquo;<samp><span class="samp">z900</span></samp>&rsquo;, &lsquo;<samp><span class="samp">z990</span></samp>&rsquo;,
153&lsquo;<samp><span class="samp">z9-109</span></samp>&rsquo;, &lsquo;<samp><span class="samp">z9-ec</span></samp>&rsquo; and &lsquo;<samp><span class="samp">z10</span></samp>&rsquo;. 
154When generating code using the instructions available on z/Architecture,
155the default is <samp><span class="option">-march=z900</span></samp>.  Otherwise, the default is
156<samp><span class="option">-march=g5</span></samp>.
157
158     <br><dt><code>-mtune=</code><var>cpu-type</var><dd><a name="index-mtune-2115"></a>Tune to <var>cpu-type</var> everything applicable about the generated code,
159except for the ABI and the set of available instructions. 
160The list of <var>cpu-type</var> values is the same as for <samp><span class="option">-march</span></samp>. 
161The default is the value used for <samp><span class="option">-march</span></samp>.
162
163     <br><dt><code>-mtpf-trace</code><dt><code>-mno-tpf-trace</code><dd><a name="index-mtpf_002dtrace-2116"></a><a name="index-mno_002dtpf_002dtrace-2117"></a>Generate code that adds (does not add) in TPF OS specific branches to trace
164routines in the operating system.  This option is off by default, even
165when compiling for the TPF OS.
166
167     <br><dt><code>-mfused-madd</code><dt><code>-mno-fused-madd</code><dd><a name="index-mfused_002dmadd-2118"></a><a name="index-mno_002dfused_002dmadd-2119"></a>Generate code that uses (does not use) the floating-point multiply and
168accumulate instructions.  These instructions are generated by default if
169hardware floating point is used.
170
171     <br><dt><code>-mwarn-framesize=</code><var>framesize</var><dd><a name="index-mwarn_002dframesize-2120"></a>Emit a warning if the current function exceeds the given frame size.  Because
172this is a compile-time check it doesn't need to be a real problem when the program
173runs.  It is intended to identify functions that most probably cause
174a stack overflow.  It is useful to be used in an environment with limited stack
175size e.g. the linux kernel.
176
177     <br><dt><code>-mwarn-dynamicstack</code><dd><a name="index-mwarn_002ddynamicstack-2121"></a>Emit a warning if the function calls <code>alloca</code> or uses dynamically-sized
178arrays.  This is generally a bad idea with a limited stack size.
179
180     <br><dt><code>-mstack-guard=</code><var>stack-guard</var><dt><code>-mstack-size=</code><var>stack-size</var><dd><a name="index-mstack_002dguard-2122"></a><a name="index-mstack_002dsize-2123"></a>If these options are provided the S/390 back end emits additional instructions in
181the function prologue that trigger a trap if the stack size is <var>stack-guard</var>
182bytes above the <var>stack-size</var> (remember that the stack on S/390 grows downward). 
183If the <var>stack-guard</var> option is omitted the smallest power of 2 larger than
184the frame size of the compiled function is chosen. 
185These options are intended to be used to help debugging stack overflow problems. 
186The additionally emitted code causes only little overhead and hence can also be
187used in production-like systems without greater performance degradation.  The given
188values have to be exact powers of 2 and <var>stack-size</var> has to be greater than
189<var>stack-guard</var> without exceeding 64k. 
190In order to be efficient the extra code makes the assumption that the stack starts
191at an address aligned to the value given by <var>stack-size</var>. 
192The <var>stack-guard</var> option can only be used in conjunction with <var>stack-size</var>. 
193</dl>
194
195 </body></html>
196
197