aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>1999-04-27 12:39:58 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>1999-04-27 08:39:58 -0400
commitbfc79d3b30a7273612d573bd15f46af1e47da502 (patch)
tree800a5beceec10d16b40a21ccd49a4a250037d67a
parenta5cf6c1c947ede1377461083eb460e0c63e38d90 (diff)
downloadgcc-bfc79d3b30a7273612d573bd15f46af1e47da502.zip
gcc-bfc79d3b30a7273612d573bd15f46af1e47da502.tar.gz
gcc-bfc79d3b30a7273612d573bd15f46af1e47da502.tar.bz2
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
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/rs6000/rs6000.c15
-rw-r--r--gcc/config/rs6000/rs6000.h22
3 files changed, 29 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3a6adde..a80fb4d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
* sh.md (insv): Use copy_addr_to_reg.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 8af45ed..072e0d1 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -308,7 +308,7 @@ rs6000_override_options (default_cpu)
little endian mode, and causes an alignment trap. The 750 does not cause
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)
{
@@ -335,11 +335,11 @@ rs6000_override_options (default_cpu)
/* Set debug flags */
if (rs6000_debug_name)
{
- if (!strcmp (rs6000_debug_name, "all"))
+ if (! strcmp (rs6000_debug_name, "all"))
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;
- else if (!strcmp (rs6000_debug_name, "arg"))
+ else if (! strcmp (rs6000_debug_name, "arg"))
rs6000_debug_arg = 1;
else
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
now. */
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
#ifdef SUBTARGET_OVERRIDE_OPTIONS
@@ -3607,7 +3608,7 @@ rs6000_stack_info ()
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
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
the debugger can handle stackless frames. */
@@ -3624,7 +3625,7 @@ rs6000_stack_info ()
info_ptr->push_p = (frame_pointer_needed
|| write_symbols != NO_DEBUG
|| ((total_raw_size - info_ptr->fixed_size)
- > (TARGET_32BIT ? 220 : 296)));
+ > (TARGET_32BIT ? 220 : 288)));
if (info_ptr->fpmem_p)
{
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 437b1f5..4aa7208 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -2551,8 +2551,9 @@ read_only_data_section () \
{ \
if (in_section != read_only_data) \
{ \
- fprintf (asm_out_file, ".csect %s[RO]\n", \
- xcoff_read_only_section_name); \
+ fprintf (asm_out_file, ".csect %s[RO]%s\n", \
+ xcoff_read_only_section_name, \
+ (TARGET_32BIT ? "" : ",3")); \
in_section = read_only_data; \
} \
} \
@@ -2562,9 +2563,9 @@ private_data_section () \
{ \
if (in_section != private_data) \
{ \
- fprintf (asm_out_file, ".csect %s[RW]\n", \
- xcoff_private_data_section_name); \
- \
+ fprintf (asm_out_file, ".csect %s[RW]%s\n", \
+ xcoff_private_data_section_name, \
+ (TARGET_32BIT ? "" : ",3")); \
in_section = private_data; \
} \
} \
@@ -2574,8 +2575,9 @@ read_only_private_data_section () \
{ \
if (in_section != read_only_private_data) \
{ \
- fprintf (asm_out_file, ".csect %s[RO]\n", \
- xcoff_private_data_section_name); \
+ fprintf (asm_out_file, ".csect %s[RO]%s\n", \
+ xcoff_private_data_section_name, \
+ (TARGET_32BIT ? "" : ",3")); \
in_section = read_only_private_data; \
} \
} \
@@ -2596,7 +2598,8 @@ toc_section () \
} \
\
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 \
{ \
@@ -2809,7 +2812,8 @@ extern int toc_initialized;
/* 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.
This sequence is indexed by compiler's hard-register-number (see above). */