bug-gnupress
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-gnupress] None


From: Paul A. Crable
Subject: [Bug-gnupress] None
Date: Wed, 7 May 2003 20:33:03 -0700

Here are suggested mods to sections 3.17.3 & 3.17.4.  If I have a
question, I identify it with "???...". You don't need to send me the
answers; just answer them in the text below:

-----------------------------------

3.17.3 VAX Options

These `-m' options are defined for the VAX:

-munix
-mgnu
        Output (-mgnu) or do not output (-munix)
certain jump instructions (aobleq and so on) that the Unix
assembler for the VAX cannot handle across long ranges.
Use -mgnu if you will assemble with the GNU assembler.
The default value is ?????????????.

-mg
        Output code for g­format foating point numbers instead
of d­format.

3.17.4 SPARC Options

These `-m' switches are supported on the SPARC:

-mno-app-regs
-mapp-regs
        Generate (-mapp-regs) or do not
generate (-mno-app-regs) output using the global registers
2 through 4, which the SPARC SVR4 ABI reserves for
applications.  -mapp-regs is the default.  To be fully
SVR4 ABI compliant but at the cost of some performance
loss, specify `-mno-app-regs'. You also should compile
libraries and system software with -mno-app-regs.

-mfpu
-mhard-float
-mno-fpu
-msoft-float
        Generate output containing calls to hardware floating
point instructions (-mfpu or -mhard-float) or calls to
software for floating point processing (-mno-fpu or -
msoft-float).

        Warning:  The requisite libraries of floating point
software are not available for all SPARC targets. Normally
the facilities of the machine's usual C compiler are used,
but this cannot be done directly in cross­compilation. You
must make your own arrangements to provide suitable
library functions for cross­compilation. The embedded
targets `sparc-*-aout' and `sparclite-*-*' do provide
software floating point support. -msoft-float and -mno-fpu
change the calling convention, so you must compile all
software with this option. In particular, you must compile
`libgcc.a', the library that comes with GCC, with `-msoft-
float' in order for this to work.

-mhard-quad-float
-msoft-quad-float
        Generate output containing quad­word (long double)
floating point instructions in hardware (-mhard-quad-
float) or through calls to software (-msoft-quad-float)
for floating point processing.  If -msoft-quad-float is
set, the calls must conform to the requirements in the
SPARC ABI.  -msoft-quad-float is the default.  As of this
writing, there are no sparc implementations that have
hardware support for the quad­word floating point
instructions. They all invoke a trap handler for one of
these instructions, and then the trap handler emulates the
effect of the instruction. Because of the trap handler
overhead, this is much slower than calling the ABI library
routines.

-mno-flat
-mflat
        Generate (-mno-flat) or do not generate (-mflat)
save/restore instructions and use (-mno-flat) or do not
use (-mflat) use a ìatî or single register window calling
convention.  -mno_flat is the default.  If -mno_flat is
specified, use %i7 as the frame pointer, which is
compatible with the normal register window model.  Code
generated with either option may be intermixed. The local
registers and the input registers (0ñ5) are still treated
as ìcall savedî registers and will be saved on the stack
as necessary.

-mno-unaligned-doubles
-munaligned-doubles
        If -mno-unaligned-doubles is specified, assume doubles
have 8-byte alignment. This is the default. If -
munaligned-doubles is specified, assume that doubles have
8-byte alignment only if they are contained in another
type or have an absolute address.  Otherwise, assume
doubles have 4-byte alignment. Specifying -munaligned-
doubles avoids some rare compatibility problems with code
generated by other compilers.  Specifying -munaligned-
doubles may result in a performance loss, especially for
floating point operations.

-mno-faster-structs
-mfaster-structs
        If `-mfaster-structs' is specified, assume that structures
have an 8-byte alignment. This enables the use of pairs of
ldd and std instructions for copies in structure
assignment, in place of twice as many ld and st pairs.
However, the use of this changed alignment directly
violates the SPARC ABI. Thus, it's intended only for use
on targets where the developer acknowledges that their
resulting code will not be directly in line with the rules
of the ABI. -mno-faster-structs removes that assumption.
The default is ?????????????.

-mv8
-msparclite
        These two options select variations on the SPARC
architecture. By default, and unless specifically
configured for the Fujitsu SPARClite, GCC generates code
for the v7 variant of the SPARC architecture.  Specifying
`-mv8' causes GCC to generate SPARC v8 code.  SPARC v8
code differs from v7 code in that in the former, GCC emits
the integer multiply and integer divide instructions which
exist in SPARC v8 but not in SPARC v7. Specifying `-
msparclite' cause GCC to generate SPARClite code.
SPARClite code adds the integer multiply, integer divide
step and scan (ffs) instructions which exist in SPARClite
but not in SPARC v7.  The default value is ???????????.
These options are deprecated and will be deleted in a
future GCC release. They have been replaced with `-
mcpu=xxx'.

-mcypress
-msupersparc
        Optimize code for Cypress CY7C602 chip as used in the
SPARCStation/SPARCServer 3xx series (-mcypress), or for
the SuperSPARC cpu, as used in the SPARCStation 10, 1000
and 2000 series (-msupersparc).  Use -mycpress for the
older SPARCStation 1, 2, IPX, and similar chips.  -
msupersparc enables use of the full SPARC v8 instruction
set.  The default value is ???????????. These options are
deprecated and will be deleted in a future GCC release.
They have been replaced with `-mcpu=xxx'.

-mcpu=cpu_type
        Set the instruction set, register set, and
instruction scheduling parameters for machine type
cpu_type. Supported values for cpu_type are `v7',
`cypress', `v8', `supersparc', `sparclite', `hypersparc',
`sparclite86x', `f930', `f934', `sparclet', `tsc701',
`v9', `ultrasparc', and `ultrasparc3'.  For values that
specify an architecture and not an implementation, default
instruction scheduling parameters will be used.  The
values specifying an architecture and not a implementation
are `v7', `v8', `sparclite', `sparclet', and `v9'. Here is
a list of each supported architecture and their supported
implementations.

        v7: cypress
        v8: supersparc
        v9: ultrasparc and ultrasparc3
        sparclite: hypersparc, sparclite86x, f930, f934
        sparclet: tsc701

-mtune=cpu_type
        Set the instruction scheduling parameters
for machine type cpu_type, but do not alter the
instruction set or register set in the way `-
mcpu=cpu_type' does.  cpu_type takes the same values as `-
mcpu=cpu_type'.  The only useful values, however, are
those that select a particular implementation, rather than
an architecture:  `cypress', `supersparc', `hypersparc',
`f930', `f934', `sparclite86x', `tsc701', `ultrasparc',
and `ultrasparc3'. These `-m' switches are supported in
addition to the above on the SPARCLET processor.

-mlittle-endian
        Generate code for a processor running in
little­endian mode.

-mlive-g0
        Treat register %g0 as a normal register. GCC
will continue to clobber it as necessary but will not
assume it always reads as 0.  If this option is omitted,
then ?????????????????????????.

-mbroken-saverestore
        Generate code that does not use
non­trivial forms of the save and restore instructions.
Early versions of the SPARCLET processor do not correctly
handle save and restore instructions used with arguments.
They correctly handle them used without arguments. A save
instruction used without arguments increments the current
window pointer but does not allocate a new stack frame.
GCC assumes that the window overflow trap handler and
interrupt handlers will handle this case properly.  This
`-m' switch is supported in addition to the above on SPARC
V9 processors in 64­bit environments.

???---What is the "above" in the last sentence? ???---What
happens if this option is omitted?

-m32
-m64
        Generate code for a 32­bit (-m32) or 64­bit (-m64)
environment. -m32 sets int, long and pointer variables to
32 bits. -m64 sets int variable to 32 bits and long and
pointer variables to 64 bits.  The default value is
??????????????.

-mcmodel=model_type
        Generate code for the code model specified by model_type.
model_type may take one of the following values:

                medlow--the program must be linked in the low 32 bits of
the address space.  Pointers are 64 bits in length.
Programs can be statically or dynamically linked.

                medmid--Generate code for the Medium/Middle code model:
the program must be linked in the low 44 bits of the
address space, the text segment must be less than 2G
bytes, and the data segment must be within 2G of the text
segment. Pointers are 64 bits in length.

                medany--Generate code for the Medium/Anywhere code model:
the program may be linked anywhere in the address space,
the text segment must be less than 2G bytes, and data
segment must be within 2G of the text segment. Pointers
are 64 bits.

                embmedany--Generate code for the Medium/Anywhere code
model for embedded systems: assume a 32­bit text and a
32­bit data segment, both starting anywhere (determined at
link time). Register %g4 points to the base of the data
segment. Pointers are still 64 bits. Programs are
statically linked, PIC is not supported.

???--What is the default; i.e., what is used if this
option is omitted?

-mstack-bias
-mno-stack-bias
        If -mstack-bias is set, assume that the stack pointer, and
frame pointer if present, are offset by 2047.  This value
must be added back when making stack frame references.  If
-mno-stack-bias is set, assume no such offset is present.
The default value is ??????????????.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]