Commit bfc79d3b by David Edelsohn Committed by David Edelsohn

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
parent a5cf6c1c
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.
......
...@@ -308,7 +308,7 @@ rs6000_override_options (default_cpu) ...@@ -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) ...@@ -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) ...@@ -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 () ...@@ -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 () ...@@ -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)
{ {
......
...@@ -2551,8 +2551,9 @@ read_only_data_section () \ ...@@ -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 () \ ...@@ -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 () \ ...@@ -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 () \ ...@@ -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; ...@@ -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). */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment