rs6000.h (read_only_data_section, [...]): Align CSECT on doubleword boundary for...
authorDavid Edelsohn <edelsohn@gnu.org>
Tue, 27 Apr 1999 12:39:58 +0000 (12:39 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Tue, 27 Apr 1999 12:39:58 +0000 (08:39 -0400)
* 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

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h

index 3a6adde500761345330850d7e6854603cdddb677..a80fb4d25f21a5ab102240453e95ebee24818b01 100644 (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>
 
        * sh.md (insv): Use copy_addr_to_reg.
index 8af45ed28ddb289b67a6671355de80c04fa1cd1a..072e0d1229efda74da7694accf8a7c22d41cfdc0 100644 (file)
@@ -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)
     {
index 437b1f5601d303c72b0481409a17f4dfbd05cc13..4aa720808c381d4d4b7fc3b909923bb7007a8a67 100644 (file)
@@ -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).  */