• 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-2011.09/share/doc/arm-arm-none-eabi/html/gcc/
1<html lang="en">
2<head>
3<title>RX 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="RS_002f6000-and-PowerPC-Options.html#RS_002f6000-and-PowerPC-Options" title="RS/6000 and PowerPC Options">
10<link rel="next" href="S_002f390-and-zSeries-Options.html#S_002f390-and-zSeries-Options" title="S/390 and zSeries Options">
11<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
12<!--
13Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
141998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
152010 Free Software Foundation, Inc.
16
17Permission is granted to copy, distribute and/or modify this document
18under the terms of the GNU Free Documentation License, Version 1.3 or
19any later version published by the Free Software Foundation; with the
20Invariant Sections being ``Funding Free Software'', the Front-Cover
21Texts being (a) (see below), and with the Back-Cover Texts being (b)
22(see below).  A copy of the license is included in the section entitled
23``GNU Free Documentation License''.
24
25(a) The FSF's Front-Cover Text is:
26
27     A GNU Manual
28
29(b) The FSF's Back-Cover Text is:
30
31     You have freedom to copy and modify this GNU Manual, like GNU
32     software.  Copies published by the Free Software Foundation raise
33     funds for GNU development.-->
34<meta http-equiv="Content-Style-Type" content="text/css">
35<style type="text/css"><!--
36  pre.display { font-family:inherit }
37  pre.format  { font-family:inherit }
38  pre.smalldisplay { font-family:inherit; font-size:smaller }
39  pre.smallformat  { font-family:inherit; font-size:smaller }
40  pre.smallexample { font-size:smaller }
41  pre.smalllisp    { font-size:smaller }
42  span.sc    { font-variant:small-caps }
43  span.roman { font-family:serif; font-weight:normal; } 
44  span.sansserif { font-family:sans-serif; font-weight:normal; } 
45--></style>
46<link rel="stylesheet" type="text/css" href="../cs.css">
47</head>
48<body>
49<div class="node">
50<a name="RX-Options"></a>
51<p>
52Next:&nbsp;<a rel="next" accesskey="n" href="S_002f390-and-zSeries-Options.html#S_002f390-and-zSeries-Options">S/390 and zSeries Options</a>,
53Previous:&nbsp;<a rel="previous" accesskey="p" href="RS_002f6000-and-PowerPC-Options.html#RS_002f6000-and-PowerPC-Options">RS/6000 and PowerPC Options</a>,
54Up:&nbsp;<a rel="up" accesskey="u" href="Submodel-Options.html#Submodel-Options">Submodel Options</a>
55<hr>
56</div>
57
58<h4 class="subsection">3.17.34 RX Options</h4>
59
60<p><a name="index-RX-Options-1952"></a>
61These command line options are defined for RX targets:
62
63     <dl>
64<dt><code>-m64bit-doubles</code><dt><code>-m32bit-doubles</code><dd><a name="index-m64bit_002ddoubles-1953"></a><a name="index-m32bit_002ddoubles-1954"></a>Make the <code>double</code> data type be 64-bits (<samp><span class="option">-m64bit-doubles</span></samp>)
65or 32-bits (<samp><span class="option">-m32bit-doubles</span></samp>) in size.  The default is
66<samp><span class="option">-m32bit-doubles</span></samp>.  <em>Note</em> RX floating point hardware only
67works on 32-bit values, which is why the default is
68<samp><span class="option">-m32bit-doubles</span></samp>.
69
70     <br><dt><code>-fpu</code><dt><code>-nofpu</code><dd><a name="index-fpu-1955"></a><a name="index-nofpu-1956"></a>Enables (<samp><span class="option">-fpu</span></samp>) or disables (<samp><span class="option">-nofpu</span></samp>) the use of RX
71floating point hardware.  The default is enabled for the <var>RX600</var>
72series and disabled for the <var>RX200</var> series.
73
74     <p>Floating point instructions will only be generated for 32-bit floating
75point values however, so if the <samp><span class="option">-m64bit-doubles</span></samp> option is in
76use then the FPU hardware will not be used for doubles.
77
78     <p><em>Note</em> If the <samp><span class="option">-fpu</span></samp> option is enabled then
79<samp><span class="option">-funsafe-math-optimizations</span></samp> is also enabled automatically. 
80This is because the RX FPU instructions are themselves unsafe.
81
82     <br><dt><code>-mcpu=</code><var>name</var><dd><a name="index-g_t_002dmcpu-1957"></a>Selects the type of RX CPU to be targeted.  Currently three types are
83supported, the generic <var>RX600</var> and <var>RX200</var> series hardware and
84the specific <var>RX610</var> CPU.  The default is <var>RX600</var>.
85
86     <p>The only difference between <var>RX600</var> and <var>RX610</var> is that the
87<var>RX610</var> does not support the <code>MVTIPL</code> instruction.
88
89     <p>The <var>RX200</var> series does not have a hardware floating point unit
90and so <samp><span class="option">-nofpu</span></samp> is enabled by default when this type is
91selected.
92
93     <br><dt><code>-mbig-endian-data</code><dt><code>-mlittle-endian-data</code><dd><a name="index-mbig_002dendian_002ddata-1958"></a><a name="index-mlittle_002dendian_002ddata-1959"></a>Store data (but not code) in the big-endian format.  The default is
94<samp><span class="option">-mlittle-endian-data</span></samp>, i.e. to store data in the little endian
95format.
96
97     <br><dt><code>-msmall-data-limit=</code><var>N</var><dd><a name="index-msmall_002ddata_002dlimit-1960"></a>Specifies the maximum size in bytes of global and static variables
98which can be placed into the small data area.  Using the small data
99area can lead to smaller and faster code, but the size of area is
100limited and it is up to the programmer to ensure that the area does
101not overflow.  Also when the small data area is used one of the RX's
102registers (<code>r13</code>) is reserved for use pointing to this area, so
103it is no longer available for use by the compiler.  This could result
104in slower and/or larger code if variables which once could have been
105held in <code>r13</code> are now pushed onto the stack.
106
107     <p>Note, common variables (variables which have not been initialised) and
108constants are not placed into the small data area as they are assigned
109to other sections in the output executable.
110
111     <p>The default value is zero, which disables this feature.  Note, this
112feature is not enabled by default with higher optimization levels
113(<samp><span class="option">-O2</span></samp> etc) because of the potentially detrimental effects of
114reserving register <code>r13</code>.  It is up to the programmer to
115experiment and discover whether this feature is of benefit to their
116program.
117
118     <br><dt><code>-msim</code><dt><code>-mno-sim</code><dd><a name="index-msim-1961"></a><a name="index-mno_002dsim-1962"></a>Use the simulator runtime.  The default is to use the libgloss board
119specific runtime.
120
121     <br><dt><code>-mas100-syntax</code><dt><code>-mno-as100-syntax</code><dd><a name="index-mas100_002dsyntax-1963"></a><a name="index-mno_002das100_002dsyntax-1964"></a>When generating assembler output use a syntax that is compatible with
122Renesas's AS100 assembler.  This syntax can also be handled by the GAS
123assembler but it has some restrictions so generating it is not the
124default option.
125
126     <br><dt><code>-mmax-constant-size=</code><var>N</var><dd><a name="index-mmax_002dconstant_002dsize-1965"></a>Specifies the maximum size, in bytes, of a constant that can be used as
127an operand in a RX instruction.  Although the RX instruction set does
128allow constants of up to 4 bytes in length to be used in instructions,
129a longer value equates to a longer instruction.  Thus in some
130circumstances it can be beneficial to restrict the size of constants
131that are used in instructions.  Constants that are too big are instead
132placed into a constant pool and referenced via register indirection.
133
134     <p>The value <var>N</var> can be between 0 and 4.  A value of 0 (the default)
135or 4 means that constants of any size are allowed.
136
137     <br><dt><code>-mrelax</code><dd><a name="index-mrelax-1966"></a>Enable linker relaxation.  Linker relaxation is a process whereby the
138linker will attempt to reduce the size of a program by finding shorter
139versions of various instructions.  Disabled by default.
140
141     <br><dt><code>-mint-register=</code><var>N</var><dd><a name="index-mint_002dregister-1967"></a>Specify the number of registers to reserve for fast interrupt handler
142functions.  The value <var>N</var> can be between 0 and 4.  A value of 1
143means that register <code>r13</code> will be reserved for the exclusive use
144of fast interrupt handlers.  A value of 2 reserves <code>r13</code> and
145<code>r12</code>.  A value of 3 reserves <code>r13</code>, <code>r12</code> and
146<code>r11</code>, and a value of 4 reserves <code>r13</code> through <code>r10</code>. 
147A value of 0, the default, does not reserve any registers.
148
149     <br><dt><code>-msave-acc-in-interrupts</code><dd><a name="index-msave_002dacc_002din_002dinterrupts-1968"></a>Specifies that interrupt handler functions should preserve the
150accumulator register.  This is only necessary if normal code might use
151the accumulator register, for example because it performs 64-bit
152multiplications.  The default is to ignore the accumulator as this
153makes the interrupt handlers faster.
154
155 </dl>
156
157 <p><em>Note:</em> The generic GCC command line <samp><span class="option">-ffixed-</span><var>reg</var></samp>
158has special significance to the RX port when used with the
159<code>interrupt</code> function attribute.  This attribute indicates a
160function intended to process fast interrupts.  GCC will will ensure
161that it only uses the registers <code>r10</code>, <code>r11</code>, <code>r12</code>
162and/or <code>r13</code> and only provided that the normal use of the
163corresponding registers have been restricted via the
164<samp><span class="option">-ffixed-</span><var>reg</var></samp> or <samp><span class="option">-mint-register</span></samp> command line
165options.
166
167 </body></html>
168
169