From bfc79d3b30a7273612d573bd15f46af1e47da502 Mon Sep 17 00:00:00 2001 From: David Edelsohn Date: Tue, 27 Apr 1999 12:39:58 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 8 ++++++++ gcc/config/rs6000/rs6000.c | 15 ++++++++------- gcc/config/rs6000/rs6000.h | 22 +++++++++++++--------- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3a6adde50076..a80fb4d25f21 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +Tue Apr 27 15:33:42 1999 David Edelsohn + + * 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 * sh.md (insv): Use copy_addr_to_reg. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 8af45ed28ddb..072e0d1229ef 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 437b1f5601d3..4aa720808c38 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). */ -- 2.47.2