linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Ensure target_flags has MASK_POWERPC64...
authorAlan Modra <amodra@bigpond.net.au>
Thu, 8 Jan 2004 15:13:23 +0000 (15:13 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Thu, 8 Jan 2004 15:13:23 +0000 (01:43 +1030)
* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Ensure
target_flags has MASK_POWERPC64 when -m64.
* config/rs6000/rs6000.c (processor_target_table): Add MASK_POWERPC64
to 620, 630, power3, power4 and rs64a entries.
* config/rs6000/rs6000.h (MASK_64BIT): Expand comment.

From-SVN: r75550

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

index aa0010d379d3b2d631c3ba05b2b1047213c0c0f1..026920a80408bfd6ab528288e054f2827e275e6d 100644 (file)
@@ -1,3 +1,11 @@
+2004-01-09  Alan Modra  <amodra@bigpond.net.au>
+
+       * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Ensure
+       target_flags has MASK_POWERPC64 when -m64.
+       * config/rs6000/rs6000.c (processor_target_table): Add MASK_POWERPC64
+       to 620, 630, power3, power4 and rs64a entries.
+       * config/rs6000/rs6000.h (MASK_64BIT): Expand comment.
+
 2004-01-08  Richard Sandiford  <rsandifo@redhat.com>
 
        * simplify-rtx.c (simplify_immed_subreg): Fix construction of
index 338143c2dfcde44f3c9a8235888b7a0fedc3081b..d56c106b5334fa222619505972d793fc00dd3865 100644 (file)
@@ -1,6 +1,7 @@
 /* Definitions of target machine for GNU compiler,
    for 64 bit PowerPC linux.
-   Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2002, 2003, 2004
+   Free Software Foundation, Inc.
 
    This file is part of GCC.
 
              target_flags &= ~MASK_PROTOTYPE;                  \
              error (INVALID_64BIT, "prototype");               \
            }                                                   \
+          if ((target_flags & MASK_POWERPC64) == 0)            \
+           {                                                   \
+             target_flags |= MASK_POWERPC64;                   \
+             error ("-m64 requires a PowerPC64 cpu");          \
+           }                                                   \
        }                                                       \
       else                                                     \
        {                                                       \
index bef470f2ebadfc602cd4ff4626eca3b2c35b23fe..32f4f2d19d3f79cdfee73694f35b853337cf744c 100644 (file)
@@ -662,8 +662,10 @@ rs6000_override_options (const char *default_cpu)
         {"603e", PROCESSOR_PPC603, POWERPC_BASE_MASK | MASK_PPC_GFXOPT},
         {"604", PROCESSOR_PPC604, POWERPC_BASE_MASK | MASK_PPC_GFXOPT},
         {"604e", PROCESSOR_PPC604e, POWERPC_BASE_MASK | MASK_PPC_GFXOPT},
-        {"620", PROCESSOR_PPC620, POWERPC_BASE_MASK | MASK_PPC_GFXOPT},
-        {"630", PROCESSOR_PPC630, POWERPC_BASE_MASK | MASK_PPC_GFXOPT},
+        {"620", PROCESSOR_PPC620,
+         POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64},
+        {"630", PROCESSOR_PPC630,
+         POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64},
         {"740", PROCESSOR_PPC750, POWERPC_BASE_MASK | MASK_PPC_GFXOPT},
         {"7400", PROCESSOR_PPC7400, POWERPC_7400_MASK},
         {"7450", PROCESSOR_PPC7450, POWERPC_7400_MASK},
@@ -684,8 +686,10 @@ rs6000_override_options (const char *default_cpu)
         {"power", PROCESSOR_POWER, MASK_POWER | MASK_MULTIPLE | MASK_STRING},
         {"power2", PROCESSOR_POWER,
          MASK_POWER | MASK_POWER2 | MASK_MULTIPLE | MASK_STRING},
-        {"power3", PROCESSOR_PPC630, POWERPC_BASE_MASK | MASK_PPC_GFXOPT},
-        {"power4", PROCESSOR_POWER4, POWERPC_BASE_MASK | MASK_PPC_GFXOPT},
+        {"power3", PROCESSOR_PPC630,
+         POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64},
+        {"power4", PROCESSOR_POWER4,
+         POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64},
         {"powerpc", PROCESSOR_POWERPC, POWERPC_BASE_MASK},
         {"powerpc64", PROCESSOR_POWERPC64,
          POWERPC_BASE_MASK | MASK_POWERPC64},
@@ -695,7 +699,7 @@ rs6000_override_options (const char *default_cpu)
          MASK_POWER | MASK_POWER2 | MASK_MULTIPLE | MASK_STRING},
         {"rsc", PROCESSOR_PPC601, MASK_POWER | MASK_MULTIPLE | MASK_STRING},
         {"rsc1", PROCESSOR_PPC601, MASK_POWER | MASK_MULTIPLE | MASK_STRING},
-        {"rs64a", PROCESSOR_RS64A, POWERPC_BASE_MASK},
+        {"rs64a", PROCESSOR_RS64A, POWERPC_BASE_MASK | MASK_POWERPC64},
       };
 
   const size_t ptt_size = ARRAY_SIZE (processor_target_table);
index 722fc844ed47304f7a46b79fcc2912a688c305fa..f09c6940c6c2b60e3f69fc28d4ac401e1a46d2de 100644 (file)
@@ -160,7 +160,10 @@ extern int target_flags;
    function, and one less allocable register.  */
 #define MASK_MINIMAL_TOC       0x00000200
 
-/* Nonzero for the 64bit model: longs and pointers are 64 bits.  */
+/* Nonzero for the 64 bit ABIs: longs and pointers are 64 bits.  The
+   chip is running in "64-bit mode", in which CR0 is set in dot
+   operations based on all 64 bits of the register, bdnz works on 64-bit
+   ctr, lr is 64 bits, and so on.  Requires MASK_POWERPC64.  */
 #define MASK_64BIT             0x00000400
 
 /* Disable use of FPRs.  */