sparc.h: Rework comments about the code model in 64-bit environment and the mode 'Pmode'.

* config/sparc/sparc.h: Rework comments about the code model
	in 64-bit environment and the mode 'Pmode'.
	* doc/invoke.texi (SPARC options): Rework description of the
	different code models supported in 64-bit environment.

From-SVN: r79509
This commit is contained in:
Eric Botcazou 2004-03-15 22:06:45 +01:00 committed by Eric Botcazou
parent 68a1af8795
commit ed38d6fe91
3 changed files with 53 additions and 42 deletions

View File

@ -1,3 +1,10 @@
2004-03-15 Eric Botcazou <ebotcazou@act-europe.fr>
* config/sparc/sparc.h: Rework comments about the code model
in 64-bit environment and the mode 'Pmode'.
* doc/invoke.texi (SPARC options): Rework description of the
different code models supported in 64-bit environment.
2004-03-15 Kazu Hirata <kazu@cs.umass.edu>
* defaults.h (REVERSIBLE_CC_MODE): Define.

View File

@ -69,35 +69,41 @@ Boston, MA 02111-1307, USA. */
#endif /* IN_LIBGCC2 */
#define TARGET_ARCH64 (! TARGET_ARCH32)
/* Code model selection.
-mcmodel is used to select the v9 code model.
Different code models aren't supported for v7/8 code.
/* Code model selection in 64-bit environment.
TARGET_CM_32: 32 bit address space, top 32 bits = 0,
pointers are 32 bits. Note that this isn't intended
to imply a v7/8 abi.
The machine mode used for addresses is 32-bit wide:
TARGET_CM_MEDLOW: 32 bit address space, top 32 bits = 0,
avoid generating %uhi and %ulo terms,
pointers are 64 bits.
TARGET_CM_32: 32-bit address space.
It is the code model used when generating 32-bit code.
TARGET_CM_MEDMID: 64 bit address space.
The executable must be in the low 16 TB of memory.
This corresponds to the low 44 bits, and the %[hml]44
relocs are used. The text segment has a maximum size
of 31 bits.
The machine mode used for addresses is 64-bit wide:
TARGET_CM_MEDANY: 64 bit address space.
The text and data segments have a maximum size of 31
bits and may be located anywhere. The maximum offset
from any instruction to the label _GLOBAL_OFFSET_TABLE_
is 31 bits.
TARGET_CM_MEDLOW: 32-bit address space.
The executable must be in the low 32 bits of memory.
This avoids generating %uhi and %ulo terms. Programs
can be statically or dynamically linked.
TARGET_CM_EMBMEDANY: 64 bit address space.
The text and data segments have a maximum size of 31 bits
and may be located anywhere. Register %g4 contains
the start address of the data segment.
*/
TARGET_CM_MEDMID: 44-bit address space.
The executable must be in the low 44 bits of memory,
and the %[hml]44 terms are used. The text and data
segments have a maximum size of 2GB (31-bit span).
The maximum offset from any instruction to the label
_GLOBAL_OFFSET_TABLE_ is 2GB (31-bit span).
TARGET_CM_MEDANY: 64-bit address space.
The text and data segments have a maximum size of 2GB
(31-bit span) and may be located anywhere in memory.
The maximum offset from any instruction to the label
_GLOBAL_OFFSET_TABLE_ is 2GB (31-bit span).
TARGET_CM_EMBMEDANY: 64-bit address space.
The text and data segments have a maximum size of 2GB
(31-bit span) and may be located anywhere in memory.
The global register %g4 contains the start address of
the data segment. Programs are statically linked and
PIC is not supported.
Different code models are not supported in 32-bit environment. */
enum cmodel {
CM_32,
@ -2212,9 +2218,7 @@ do { \
is done just by pretending it is already truncated. */
#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
/* Specify the machine mode that pointers have.
After generation of rtl, the compiler makes no further distinction
between pointers and any other objects of this machine mode. */
/* Specify the machine mode used for addresses. */
#define Pmode (TARGET_ARCH64 ? DImode : SImode)
/* Generate calls to memcpy, memcmp and memset. */

View File

@ -6360,31 +6360,31 @@ to 64 bits.
@item -mcmodel=medlow
@opindex mcmodel=medlow
Generate code for the Medium/Low code model: the program must be linked
in the low 32 bits of the address space. Pointers are 64 bits.
Programs can be statically or dynamically linked.
Generate code for the Medium/Low code model: 64-bit addresses, programs
must be linked in the low 32 bits of memory. Programs can be statically
or dynamically linked.
@item -mcmodel=medmid
@opindex mcmodel=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 data segment must be within 2G of the text segment.
Pointers are 64 bits.
Generate code for the Medium/Middle code model: 64-bit addresses, programs
must be linked in the low 44 bits of memory, the text and data segments must
be less than 2GB in size and the data segment must be located within 2GB of
the text segment.
@item -mcmodel=medany
@opindex mcmodel=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.
Generate code for the Medium/Anywhere code model: 64-bit addresses, programs
may be linked anywhere in memory, the text and data segments must be less
than 2GB in size and the data segment must be located within 2GB of the
text segment.
@item -mcmodel=embmedany
@opindex mcmodel=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.
64-bit addresses, the text and data segments must be less than 2GB in
size, both starting anywhere in memory (determined at link time). The
global register %g4 points to the base of the data segment. Programs
are statically linked and PIC is not supported.
@item -mstack-bias
@itemx -mno-stack-bias