rs6000.h (read_only_data_section, [...]): Align CSECT on doubleword boundary for 64-bit target.

* rs6000.h (read_only_data_section, private_data_section,
	read_only_private_data_section, toc_section): Align CSECT on
	doubleword boundary for 64-bit target.
	(DATA_SECTION_ASM_OP): Likewise.
	* rs6000.c (rs6000_stack_info): Leaf procedure stack limit is 288.

From-SVN: r26678
This commit is contained in:
David Edelsohn 1999-04-27 12:39:58 +00:00 committed by David Edelsohn
parent a5cf6c1c94
commit bfc79d3b30
3 changed files with 29 additions and 16 deletions

View File

@ -1,3 +1,11 @@
Tue Apr 27 15:33:42 1999 David Edelsohn <edelsohn@gnu.org>
* rs6000.h (read_only_data_section, private_data_section,
read_only_private_data_section, toc_section): Align CSECT on
doubleword boundary for 64-bit target.
(DATA_SECTION_ASM_OP): Likewise.
* rs6000.c (rs6000_stack_info): Leaf procedure stack limit is 288.
Tue Apr 27 20:19:47 1999 J"orn Rennecke <amylaar@cygnus.co.uk> Tue Apr 27 20:19:47 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh.md (insv): Use copy_addr_to_reg. * sh.md (insv): Use copy_addr_to_reg.

View File

@ -308,7 +308,7 @@ rs6000_override_options (default_cpu)
little endian mode, and causes an alignment trap. The 750 does not cause little endian mode, and causes an alignment trap. The 750 does not cause
an alignment trap (except when the target is unaligned). */ an alignment trap (except when the target is unaligned). */
if (!BYTES_BIG_ENDIAN && rs6000_cpu != PROCESSOR_PPC750) if (! BYTES_BIG_ENDIAN && rs6000_cpu != PROCESSOR_PPC750)
{ {
if (TARGET_MULTIPLE) if (TARGET_MULTIPLE)
{ {
@ -335,11 +335,11 @@ rs6000_override_options (default_cpu)
/* Set debug flags */ /* Set debug flags */
if (rs6000_debug_name) if (rs6000_debug_name)
{ {
if (!strcmp (rs6000_debug_name, "all")) if (! strcmp (rs6000_debug_name, "all"))
rs6000_debug_stack = rs6000_debug_arg = 1; rs6000_debug_stack = rs6000_debug_arg = 1;
else if (!strcmp (rs6000_debug_name, "stack")) else if (! strcmp (rs6000_debug_name, "stack"))
rs6000_debug_stack = 1; rs6000_debug_stack = 1;
else if (!strcmp (rs6000_debug_name, "arg")) else if (! strcmp (rs6000_debug_name, "arg"))
rs6000_debug_arg = 1; rs6000_debug_arg = 1;
else else
error ("Unknown -mdebug-%s switch", rs6000_debug_name); error ("Unknown -mdebug-%s switch", rs6000_debug_name);
@ -349,7 +349,8 @@ rs6000_override_options (default_cpu)
/* If the user desires alternate register names, copy in the alternate names /* If the user desires alternate register names, copy in the alternate names
now. */ now. */
if (TARGET_REGNAMES) if (TARGET_REGNAMES)
bcopy ((char *)alt_reg_names, (char *)rs6000_reg_names, sizeof (rs6000_reg_names)); bcopy ((char *)alt_reg_names, (char *)rs6000_reg_names,
sizeof (rs6000_reg_names));
#endif #endif
#ifdef SUBTARGET_OVERRIDE_OPTIONS #ifdef SUBTARGET_OVERRIDE_OPTIONS
@ -3607,7 +3608,7 @@ rs6000_stack_info ()
the stack might be dynamically adjusted), if we are debugging, if we the stack might be dynamically adjusted), if we are debugging, if we
make calls, or if the sum of fp_save, gp_save, fpmem, and local variables make calls, or if the sum of fp_save, gp_save, fpmem, and local variables
are more than the space needed to save all non-volatile registers: are more than the space needed to save all non-volatile registers:
32-bit: 18*8 + 19*4 = 220 or 64-bit: 18*8 + 19*8 = 296 32-bit: 18*8 + 19*4 = 220 or 64-bit: 18*8 + 18*8 = 288 (GPR13 reserved).
For V.4 we don't have the stack cushion that AIX uses, but assume that For V.4 we don't have the stack cushion that AIX uses, but assume that
the debugger can handle stackless frames. */ the debugger can handle stackless frames. */
@ -3624,7 +3625,7 @@ rs6000_stack_info ()
info_ptr->push_p = (frame_pointer_needed info_ptr->push_p = (frame_pointer_needed
|| write_symbols != NO_DEBUG || write_symbols != NO_DEBUG
|| ((total_raw_size - info_ptr->fixed_size) || ((total_raw_size - info_ptr->fixed_size)
> (TARGET_32BIT ? 220 : 296))); > (TARGET_32BIT ? 220 : 288)));
if (info_ptr->fpmem_p) if (info_ptr->fpmem_p)
{ {

View File

@ -2551,8 +2551,9 @@ read_only_data_section () \
{ \ { \
if (in_section != read_only_data) \ if (in_section != read_only_data) \
{ \ { \
fprintf (asm_out_file, ".csect %s[RO]\n", \ fprintf (asm_out_file, ".csect %s[RO]%s\n", \
xcoff_read_only_section_name); \ xcoff_read_only_section_name, \
(TARGET_32BIT ? "" : ",3")); \
in_section = read_only_data; \ in_section = read_only_data; \
} \ } \
} \ } \
@ -2562,9 +2563,9 @@ private_data_section () \
{ \ { \
if (in_section != private_data) \ if (in_section != private_data) \
{ \ { \
fprintf (asm_out_file, ".csect %s[RW]\n", \ fprintf (asm_out_file, ".csect %s[RW]%s\n", \
xcoff_private_data_section_name); \ xcoff_private_data_section_name, \
\ (TARGET_32BIT ? "" : ",3")); \
in_section = private_data; \ in_section = private_data; \
} \ } \
} \ } \
@ -2574,8 +2575,9 @@ read_only_private_data_section () \
{ \ { \
if (in_section != read_only_private_data) \ if (in_section != read_only_private_data) \
{ \ { \
fprintf (asm_out_file, ".csect %s[RO]\n", \ fprintf (asm_out_file, ".csect %s[RO]%s\n", \
xcoff_private_data_section_name); \ xcoff_private_data_section_name, \
(TARGET_32BIT ? "" : ",3")); \
in_section = read_only_private_data; \ in_section = read_only_private_data; \
} \ } \
} \ } \
@ -2596,7 +2598,8 @@ toc_section () \
} \ } \
\ \
if (in_section != toc) \ if (in_section != toc) \
fputs (".csect toc_table[RW]\n", asm_out_file); \ fprintf (asm_out_file, ".csect toc_table[RW]%s\n", \
(TARGET_32BIT ? "" : ",3")); \
} \ } \
else \ else \
{ \ { \
@ -2809,7 +2812,8 @@ extern int toc_initialized;
/* Output before writable data. */ /* Output before writable data. */
#define DATA_SECTION_ASM_OP ".csect .data[RW]" #define DATA_SECTION_ASM_OP (TARGET_32BIT \
? ".csect .data[RW]" : ".csect .data[RW],3")
/* How to refer to registers in assembler output. /* How to refer to registers in assembler output.
This sequence is indexed by compiler's hard-register-number (see above). */ This sequence is indexed by compiler's hard-register-number (see above). */