GNU Info

Info Node: (gcc-295.info)RS/6000 and PowerPC Options

(gcc-295.info)RS/6000 and PowerPC Options


Next: RT Options Prev: M88K Options Up: Submodel Options
Enter node , (file) or (file)node

IBM RS/6000 and PowerPC Options
-------------------------------

   These `-m' options are defined for the IBM RS/6000 and PowerPC:
`-mpower'
`-mno-power'
`-mpower2'
`-mno-power2'
`-mpowerpc'
`-mno-powerpc'
`-mpowerpc-gpopt'
`-mno-powerpc-gpopt'
`-mpowerpc-gfxopt'
`-mno-powerpc-gfxopt'
`-mpowerpc64'
`-mno-powerpc64'
     GCC supports two related instruction set architectures for the
     RS/6000 and PowerPC.  The "POWER" instruction set are those
     instructions supported by the `rios' chip set used in the original
     RS/6000 systems and the "PowerPC" instruction set is the
     architecture of the Motorola MPC5xx, MPC6xx, MPC8xx
     microprocessors, and the IBM 4xx microprocessors.

     Neither architecture is a subset of the other.  However there is a
     large common subset of instructions supported by both.  An MQ
     register is included in processors supporting the POWER
     architecture.

     You use these options to specify which instructions are available
     on the processor you are using.  The default value of these
     options is determined when configuring GCC.  Specifying the
     `-mcpu=CPU_TYPE' overrides the specification of these options.  We
     recommend you use the `-mcpu=CPU_TYPE' option rather than the
     options listed above.

     The `-mpower' option allows GCC to generate instructions that are
     found only in the POWER architecture and to use the MQ register.
     Specifying `-mpower2' implies `-power' and also allows GCC to
     generate instructions that are present in the POWER2 architecture
     but not the original POWER architecture.

     The `-mpowerpc' option allows GCC to generate instructions that
     are found only in the 32-bit subset of the PowerPC architecture.
     Specifying `-mpowerpc-gpopt' implies `-mpowerpc' and also allows
     GCC to use the optional PowerPC architecture instructions in the
     General Purpose group, including floating-point square root.
     Specifying `-mpowerpc-gfxopt' implies `-mpowerpc' and also allows
     GCC to use the optional PowerPC architecture instructions in the
     Graphics group, including floating-point select.

     The `-mpowerpc64' option allows GCC to generate the additional
     64-bit instructions that are found in the full PowerPC64
     architecture and to treat GPRs as 64-bit, doubleword quantities.
     GCC defaults to `-mno-powerpc64'.

     If you specify both `-mno-power' and `-mno-powerpc', GCC will use
     only the instructions in the common subset of both architectures
     plus some special AIX common-mode calls, and will not use the MQ
     register.  Specifying both `-mpower' and `-mpowerpc' permits GCC
     to use any instruction from either architecture and to allow use
     of the MQ register; specify this for the Motorola MPC601.

`-mnew-mnemonics'
`-mold-mnemonics'
     Select which mnemonics to use in the generated assembler code.
     `-mnew-mnemonics' requests output that uses the assembler mnemonics
     defined for the PowerPC architecture, while `-mold-mnemonics'
     requests the assembler mnemonics defined for the POWER
     architecture.  Instructions defined in only one architecture have
     only one mnemonic; GCC uses that mnemonic irrespective of which of
     these options is specified.

     GCC defaults to the mnemonics appropriate for the architecture in
     use.  Specifying `-mcpu=CPU_TYPE' sometimes overrides the value of
     these option.  Unless you are building a cross-compiler, you
     should normally not specify either `-mnew-mnemonics' or
     `-mold-mnemonics', but should instead accept the default.

`-mcpu=CPU_TYPE'
     Set architecture type, register usage, choice of mnemonics, and
     instruction scheduling parameters for machine type CPU_TYPE.
     Supported values for CPU_TYPE are `rs6000', `rios1', `rios2',
     `rsc', `601', `602', `603', `603e', `604', `604e', `620', `740',
     `750', `power', `power2', `powerpc', `403', `505', `801', `821',
     `823', and `860' and `common'.  `-mcpu=power', `-mcpu=power2', and
     `-mcpu=powerpc' specify generic POWER, POWER2 and pure PowerPC
     (i.e., not MPC601) architecture machine types, with an appropriate,
     generic processor model assumed for scheduling purposes.

     Specifying any of the following options: `-mcpu=rios1',
     `-mcpu=rios2', `-mcpu=rsc', `-mcpu=power', or `-mcpu=power2'
     enables the `-mpower' option and disables the `-mpowerpc' option;
     `-mcpu=601' enables both the `-mpower' and `-mpowerpc' options.
     All of `-mcpu=602', `-mcpu=603', `-mcpu=603e', `-mcpu=604',
     `-mcpu=620', enable the `-mpowerpc' option and disable the
     `-mpower' option.  Exactly similarly, all of `-mcpu=403',
     `-mcpu=505', `-mcpu=821', `-mcpu=860' and `-mcpu=powerpc' enable
     the `-mpowerpc' option and disable the `-mpower' option.
     `-mcpu=common' disables both the `-mpower' and `-mpowerpc' options.

     AIX versions 4 or greater selects `-mcpu=common' by default, so
     that code will operate on all members of the RS/6000 and PowerPC
     families.  In that case, GCC will use only the instructions in the
     common subset of both architectures plus some special AIX
     common-mode calls, and will not use the MQ register.  GCC assumes
     a generic processor model for scheduling purposes.

     Specifying any of the options `-mcpu=rios1', `-mcpu=rios2',
     `-mcpu=rsc', `-mcpu=power', or `-mcpu=power2' also disables the
     `new-mnemonics' option.  Specifying `-mcpu=601', `-mcpu=602',
     `-mcpu=603', `-mcpu=603e', `-mcpu=604', `620', `403', or
     `-mcpu=powerpc' also enables the `new-mnemonics' option.

     Specifying `-mcpu=403', `-mcpu=821', or `-mcpu=860' also enables
     the `-msoft-float' option.

`-mtune=CPU_TYPE'
     Set the instruction scheduling parameters for machine type
     CPU_TYPE, but do not set the architecture type, register usage,
     choice of mnemonics like `-mcpu='CPU_TYPE would.  The same values
     for CPU_TYPE are used for `-mtune='CPU_TYPE as for
     `-mcpu='CPU_TYPE.  The `-mtune='CPU_TYPE option overrides the
     `-mcpu='CPU_TYPE option in terms of instruction scheduling
     parameters.

`-mfull-toc'
`-mno-fp-in-toc'
`-mno-sum-in-toc'
`-mminimal-toc'
     Modify generation of the TOC (Table Of Contents), which is created
     for every executable file.  The `-mfull-toc' option is selected by
     default.  In that case, GCC will allocate at least one TOC entry
     for each unique non-automatic variable reference in your program.
     GCC will also place floating-point constants in the TOC.  However,
     only 16,384 entries are available in the TOC.

     If you receive a linker error message that saying you have
     overflowed the available TOC space, you can reduce the amount of
     TOC space used with the `-mno-fp-in-toc' and `-mno-sum-in-toc'
     options.  `-mno-fp-in-toc' prevents GCC from putting floating-point
     constants in the TOC and `-mno-sum-in-toc' forces GCC to generate
     code to calculate the sum of an address and a constant at run-time
     instead of putting that sum into the TOC.  You may specify one or
     both of these options.  Each causes GCC to produce very slightly
     slower and larger code at the expense of conserving TOC space.

     If you still run out of space in the TOC even when you specify
     both of these options, specify `-mminimal-toc' instead.  This
     option causes GCC to make only one TOC entry for every file.  When
     you specify this option, GCC will produce code that is slower and
     larger but which uses extremely little TOC space.  You may wish to
     use this option only on files that contain less frequently
     executed code.

`-maix64'
`-maix32'
     Enable AIX 64-bit ABI and calling convention: 64-bit pointers,
     64-bit `long' type, and the infrastructure needed to support them.
     Specifying `-maix64' implies `-mpowerpc64' and `-mpowerpc', while
     `-maix32' disables the 64-bit ABI and implies `-mno-powerpc64'.
     GCC defaults to `-maix32'.

`-mxl-call'
`-mno-xl-call'
     On AIX, pass floating-point arguments to prototyped functions
     beyond the register save area (RSA) on the stack in addition to
     argument FPRs.  The AIX calling convention was extended but not
     initially documented to handle an obscure K&R C case of calling a
     function that takes the address of its arguments with fewer
     arguments than declared.  AIX XL compilers access floating point
     arguments which do not fit in the RSA from the stack when a
     subroutine is compiled without optimization.  Because always
     storing floating-point arguments on the stack is inefficient and
     rarely needed, this option is not enabled by default and only is
     necessary when calling subroutines compiled by AIX XL compilers
     without optimization.

`-mthreads'
     Support "AIX Threads".  Link an application written to use
     "pthreads" with special libraries and startup code to enable the
     application to run.

`-mpe'
     Support "IBM RS/6000 SP" "Parallel Environment" (PE).  Link an
     application written to use message passing with special startup
     code to enable the application to run.  The system must have PE
     installed in the standard location (`/usr/lpp/ppe.poe/'), or the
     `specs' file must be overridden with the `-specs=' option to
     specify the appropriate directory location.  The Parallel
     Environment does not support threads, so the `-mpe' option and the
     `-mthreads' option are incompatible.

`-msoft-float'
`-mhard-float'
     Generate code that does not use (uses) the floating-point register
     set.  Software floating point emulation is provided if you use the
     `-msoft-float' option, and pass the option to GCC when linking.

`-mmultiple'
`-mno-multiple'
     Generate code that uses (does not use) the load multiple word
     instructions and the store multiple word instructions.  These
     instructions are generated by default on POWER systems, and not
     generated on PowerPC systems.  Do not use `-mmultiple' on little
     endian PowerPC systems, since those instructions do not work when
     the processor is in little endian mode.  The exceptions are PPC740
     and PPC750 which permit the instructions usage in little endian
     mode.

`-mstring'
`-mno-string'
     Generate code that uses (does not use) the load string instructions
     and the store string word instructions to save multiple registers
     and do small block moves.  These instructions are generated by
     default on POWER systems, and not generated on PowerPC systems.
     Do not use `-mstring' on little endian PowerPC systems, since those
     instructions do not work when the processor is in little endian
     mode.  The exceptions are PPC740 and PPC750 which permit the
     instructions usage in little endian mode.

`-mupdate'
`-mno-update'
     Generate code that uses (does not use) the load or store
     instructions that update the base register to the address of the
     calculated memory location.  These instructions are generated by
     default.  If you use `-mno-update', there is a small window
     between the time that the stack pointer is updated and the address
     of the previous frame is stored, which means code that walks the
     stack frame across interrupts or signals may get corrupted data.

`-mfused-madd'
`-mno-fused-madd'
     Generate code that uses (does not use) the floating point multiply
     and accumulate instructions.  These instructions are generated by
     default if hardware floating is used.

`-mno-bit-align'
`-mbit-align'
     On System V.4 and embedded PowerPC systems do not (do) force
     structures and unions that contain bit fields to be aligned to the
     base type of the bit field.

     For example, by default a structure containing nothing but 8
     `unsigned' bitfields of length 1 would be aligned to a 4 byte
     boundary and have a size of 4 bytes.  By using `-mno-bit-align',
     the structure would be aligned to a 1 byte boundary and be one
     byte in size.

`-mno-strict-align'
`-mstrict-align'
     On System V.4 and embedded PowerPC systems do not (do) assume that
     unaligned memory references will be handled by the system.

`-mrelocatable'
`-mno-relocatable'
     On embedded PowerPC systems generate code that allows (does not
     allow) the program to be relocated to a different address at
     runtime.  If you use `-mrelocatable' on any module, all objects
     linked together must be compiled with `-mrelocatable' or
     `-mrelocatable-lib'.

`-mrelocatable-lib'
`-mno-relocatable-lib'
     On embedded PowerPC systems generate code that allows (does not
     allow) the program to be relocated to a different address at
     runtime.  Modules compiled with `-mrelocatable-lib' can be linked
     with either modules compiled without `-mrelocatable' and
     `-mrelocatable-lib' or with modules compiled with the
     `-mrelocatable' options.

`-mno-toc'
`-mtoc'
     On System V.4 and embedded PowerPC systems do not (do) assume that
     register 2 contains a pointer to a global area pointing to the
     addresses used in the program.

`-mlittle'
`-mlittle-endian'
     On System V.4 and embedded PowerPC systems compile code for the
     processor in little endian mode.  The `-mlittle-endian' option is
     the same as `-mlittle'.

`-mbig'
`-mbig-endian'
     On System V.4 and embedded PowerPC systems compile code for the
     processor in big endian mode.  The `-mbig-endian' option is the
     same as `-mbig'.

`-mcall-sysv'
     On System V.4 and embedded PowerPC systems compile code using
     calling conventions that adheres to the March 1995 draft of the
     System V Application Binary Interface, PowerPC processor
     supplement.  This is the default unless you configured GCC using
     `powerpc-*-eabiaix'.

`-mcall-sysv-eabi'
     Specify both `-mcall-sysv' and `-meabi' options.

`-mcall-sysv-noeabi'
     Specify both `-mcall-sysv' and `-mno-eabi' options.

`-mcall-aix'
     On System V.4 and embedded PowerPC systems compile code using
     calling conventions that are similar to those used on AIX.  This
     is the default if you configured GCC using `powerpc-*-eabiaix'.

`-mcall-solaris'
     On System V.4 and embedded PowerPC systems compile code for the
     Solaris operating system.

`-mcall-linux'
     On System V.4 and embedded PowerPC systems compile code for the
     Linux-based GNU system.

`-mprototype'
`-mno-prototype'
     On System V.4 and embedded PowerPC systems assume that all calls to
     variable argument functions are properly prototyped.  Otherwise,
     the compiler must insert an instruction before every non
     prototyped call to set or clear bit 6 of the condition code
     register (CR) to indicate whether floating point values were
     passed in the floating point registers in case the function takes
     a variable arguments.  With `-mprototype', only calls to
     prototyped variable argument functions will set or clear the bit.

`-msim'
     On embedded PowerPC systems, assume that the startup module is
     called `sim-crt0.o' and that the standard C libraries are
     `libsim.a' and `libc.a'.  This is the default for
     `powerpc-*-eabisim'.  configurations.

`-mmvme'
     On embedded PowerPC systems, assume that the startup module is
     called `crt0.o' and the standard C libraries are `libmvme.a' and
     `libc.a'.

`-mads'
     On embedded PowerPC systems, assume that the startup module is
     called `crt0.o' and the standard C libraries are `libads.a' and
     `libc.a'.

`-myellowknife'
     On embedded PowerPC systems, assume that the startup module is
     called `crt0.o' and the standard C libraries are `libyk.a' and
     `libc.a'.

`-memb'
     On embedded PowerPC systems, set the PPC_EMB bit in the ELF flags
     header to indicate that `eabi' extended relocations are used.

`-meabi'
`-mno-eabi'
     On System V.4 and embedded PowerPC systems do (do not) adhere to
     the Embedded Applications Binary Interface (eabi) which is a set of
     modifications to the System V.4 specifications.  Selecting `-meabi'
     means that the stack is aligned to an 8 byte boundary, a function
     `__eabi' is called to from `main' to set up the eabi environment,
     and the `-msdata' option can use both `r2' and `r13' to point to
     two separate small data areas.  Selecting `-mno-eabi' means that
     the stack is aligned to a 16 byte boundary, do not call an
     initialization function from `main', and the `-msdata' option will
     only use `r13' to point to a single small data area.  The `-meabi'
     option is on by default if you configured GCC using one of the
     `powerpc*-*-eabi*' options.

`-msdata=eabi'
     On System V.4 and embedded PowerPC systems, put small initialized
     `const' global and static data in the `.sdata2' section, which is
     pointed to by register `r2'.  Put small initialized non-`const'
     global and static data in the `.sdata' section, which is pointed
     to by register `r13'.  Put small uninitialized global and static
     data in the `.sbss' section, which is adjacent to the `.sdata'
     section.  The `-msdata=eabi' option is incompatible with the
     `-mrelocatable' option.  The `-msdata=eabi' option also sets the
     `-memb' option.

`-msdata=sysv'
     On System V.4 and embedded PowerPC systems, put small global and
     static data in the `.sdata' section, which is pointed to by
     register `r13'.  Put small uninitialized global and static data in
     the `.sbss' section, which is adjacent to the `.sdata' section.
     The `-msdata=sysv' option is incompatible with the `-mrelocatable'
     option.

`-msdata=default'
`-msdata'
     On System V.4 and embedded PowerPC systems, if `-meabi' is used,
     compile code the same as `-msdata=eabi', otherwise compile code the
     same as `-msdata=sysv'.

`-msdata-data'
     On System V.4 and embedded PowerPC systems, put small global and
     static data in the `.sdata' section.  Put small uninitialized
     global and static data in the `.sbss' section.  Do not use
     register `r13' to address small data however.  This is the default
     behavior unless other `-msdata' options are used.

`-msdata=none'
`-mno-sdata'
     On embedded PowerPC systems, put all initialized global and static
     data in the `.data' section, and all uninitialized data in the
     `.bss' section.

`-G NUM'
     On embedded PowerPC systems, put global and static items less than
     or equal to NUM bytes into the small data or bss sections instead
     of the normal data or bss section.  By default, NUM is 8.  The `-G
     NUM' switch is also passed to the linker.  All modules should be
     compiled with the same `-G NUM' value.

`-mregnames'
`-mno-regnames'
     On System V.4 and embedded PowerPC systems do (do not) emit
     register names in the assembly language output using symbolic
     forms.


automatically generated by info2www version 1.2.2.9