Next:S/390 and zSeries Options, Previous:IBM RS/6000 and PowerPC Options, Up:Machine-Dependent Options [Contents][Index]
These command-line options are defined for RX targets:
-m64bit-doubles ¶-m32bit-doublesMake thedouble data type be 64 bits (-m64bit-doubles)or 32 bits (-m32bit-doubles) in size. The default is-m32bit-doubles.Note RX floating-point hardware onlyworks on 32-bit values, which is why the default is-m32bit-doubles.
-fpu ¶-nofpuEnables (-fpu) or disables (-nofpu) the use of RXfloating-point hardware. The default is enabled for the RX600series and disabled for the RX200 series.
Floating-point instructions are only generated for 32-bit floating-pointvalues, however, so the FPU hardware is not used for doubles if the-m64bit-doubles option is used.
Note If the-fpu option is enabled then-funsafe-math-optimizations is also enabled automatically.This is because the RX FPU instructions are themselves unsafe.
-mcpu=name ¶Selects the type of RX CPU to be targeted. Currently three types aresupported, the generic ‘RX600’ and ‘RX200’ series hardware andthe specific ‘RX610’ CPU. The default is ‘RX600’.
The only difference between ‘RX600’ and ‘RX610’ is that the‘RX610’ does not support theMVTIPL instruction.
The ‘RX200’ series does not have a hardware floating-point unitand so-nofpu is enabled by default when this type isselected.
-mbig-endian-data ¶-mlittle-endian-dataStore data (but not code) in the big-endian format. The default is-mlittle-endian-data, i.e. to store data in the little-endianformat.
-msmall-data-limit=N ¶Specifies the maximum size in bytes of global and static variablesthat can be placed into the small data area. Using the small dataarea can lead to smaller and faster code, but the size of area islimited and it is up to the programmer to ensure that the area doesnot overflow. Also when the small data area is used one of the RX’sregisters (usuallyr13) is reserved for use pointing to thisarea, so it is no longer available for use by the compiler. Thiscould result in slower and/or larger code if variables are pushed ontothe stack instead of being held in this register.
Note, common variables (variables that have not been initialized) andconstants are not placed into the small data area as they are assignedto other sections in the output executable.
The default value is zero, which disables this feature. Note, thisfeature is not enabled by default with higher optimization levels(-O2 etc) because of the potentially detrimental effects ofreserving a register. It is up to the programmer to experiment anddiscover whether this feature is of benefit to their program. See thedescription of the-mpid option for a description of how theactual register to hold the small data area pointer is chosen.
-msim ¶-mno-simUse the simulator runtime. The default is to use the libglossboard-specific runtime.
-mas100-syntax ¶-mno-as100-syntaxWhen generating assembler output use a syntax that is compatible withRenesas’s AS100 assembler. This syntax can also be handled by the GASassembler, but it has some restrictions so it is not generated by default.
-mmax-constant-size=N ¶Specifies the maximum size, in bytes, of a constant that can be used asan operand in a RX instruction. Although the RX instruction set doesallow constants of up to 4 bytes in length to be used in instructions,a longer value equates to a longer instruction. Thus in somecircumstances it can be beneficial to restrict the size of constantsthat are used in instructions. Constants that are too big are insteadplaced into a constant pool and referenced via register indirection.
The valueN can be between 0 and 4. A value of 0 (the default)or 4 means that constants of any size are allowed.
-mrelax ¶Enable linker relaxation. Linker relaxation is a process whereby thelinker attempts to reduce the size of a program by finding shorterversions of various instructions. Disabled by default.
-mint-register=N ¶Specify the number of registers to reserve for fast interrupt handlerfunctions. The valueN can be between 0 and 4. A value of 1means that registerr13 is reserved for the exclusive useof fast interrupt handlers. A value of 2 reservesr13 andr12. A value of 3 reservesr13,r12 andr11, and a value of 4 reservesr13 throughr10.A value of 0, the default, does not reserve any registers.
-msave-acc-in-interrupts ¶Specifies that interrupt handler functions should preserve theaccumulator register. This is only necessary if normal code might usethe accumulator register, for example because it performs 64-bitmultiplications. The default is to ignore the accumulator as thismakes the interrupt handlers faster.
-mpid ¶-mno-pidEnables the generation of position-independent data. When enabled, anyaccess to constant data is done via an offset from a base addressheld in a register. This allows the location of constant data to bedetermined at run time without requiring the executable to berelocated, which is a benefit to embedded applications with tightmemory constraints. Data that can be modified is not affected by thisoption.
Note, using this feature reserves a register, usuallyr13, forthe constant data base address. This can result in slower and/orlarger code, especially in complicated functions.
The actual register chosen to hold the constant data base addressdepends upon whether the-msmall-data-limit and/or the-mint-register command-line options are enabled. Startingwith registerr13 and proceeding downwards, registers areallocated first to satisfy the requirements of-mint-register,then-mpid and finally-msmall-data-limit. Thus itis possible for the small data area register to ber8 if both-mint-register=4 and-mpid are specified on thecommand line.
By default this feature is not enabled. The default can be restoredvia the-mno-pid command-line option.
-mno-warn-multiple-fast-interrupts ¶-mwarn-multiple-fast-interruptsPrevents GCC from issuing a warning message if it finds more than onefast interrupt handler when it is compiling a file. The default is toissue a warning for each extra fast interrupt handler found, as the RXonly supports one such interrupt.
-mallow-string-insns ¶-mno-allow-string-insnsEnables or disables the use of the string manipulation instructionsSMOVF,SCMPU,SMOVB,SMOVU,SUNTILSWHILE and also theRMPA instruction. Theseinstructions may prefetch data, which is not safe to do if accessingan I/O register. (See section 12.2.7 of the RX62N Group User’s Manualfor more information).
The default is to allow these instructions, but it is not possible forGCC to reliably detect all circumstances where a string instructionmight be used to access an I/O register, so their use cannot bedisabled automatically. Instead it is reliant upon the programmer touse the-mno-allow-string-insns option if their programaccesses I/O space.
When the instructions are enabled GCC defines the C preprocessorsymbol__RX_ALLOW_STRING_INSNS__, otherwise it defines thesymbol__RX_DISALLOW_STRING_INSNS__.
-mjsr ¶-mno-jsrUse only (or not only)JSR instructions to access functions.This option can be used when code size exceeds the range ofBSRinstructions. Note that-mno-jsr does not mean to not useJSR but instead means that any type of branch may be used.
-mlra ¶Use the new LRA register allocator. By default, the old “reload”allocator is used.
Note: The generic GCC command-line option-ffixed-reghas special significance to the RX port when used with theinterrupt function attribute. This attribute indicates afunction intended to process fast interrupts. GCC ensuresthat it only uses the registersr10,r11,r12and/orr13 and only provided that the normal use of thecorresponding registers have been restricted via the-ffixed-reg or-mint-register command-lineoptions.
Next:S/390 and zSeries Options, Previous:IBM RS/6000 and PowerPC Options, Up:Machine-Dependent Options [Contents][Index]