2002-02-19 Martin Schwidefsky <schwidefsky@de.ibm.com>
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 19 Feb 2002 18:50:35 +0000 (18:50 +0000)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Tue, 19 Feb 2002 18:50:35 +0000 (18:50 +0000)
* config/tc-s390.c (md_parse_option): Add switches -m31 and -m64.
Make bit size independent of architecture switch.
(md_begin): Add warning for -m64 with -Aesa.
(s390_md_end): Use renamed architecture defines.

gas/ChangeLog
gas/config/tc-s390.c

index ada45b23847f1ee10b2376978525b4a132e1e49f..6b45eb487e88d54628d9280bb0eda4bfd49c2f9c 100644 (file)
@@ -1,3 +1,10 @@
+2002-02-19  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+       * config/tc-s390.c (md_parse_option): Add switches -m31 and -m64.
+       Make bit size independent of architecture switch.
+       (md_begin): Add warning for -m64 with -Aesa.
+       (s390_md_end): Use renamed architecture defines.
+
 2002-02-18  Daniel Jacobowitz  <drow@mvista.com>
 
        * config/obj-coff.h: Check !target_big_endian, not shl, for coff-sh.
index 2fb2c6c3a25854da9a94f16d3adfa35c4422e597..966db56b1f299a77181c057f675dbf85eb8b307e 100644 (file)
@@ -373,6 +373,12 @@ md_parse_option (c, arg)
       else if (arg != NULL && strcmp (arg, "warn-areg-zero") == 0)
        warn_areg_zero = TRUE;
 
+      else if (arg != NULL && strcmp (arg, "31") == 0)
+       s390_arch_size = 31;
+
+      else if (arg != NULL && strcmp (arg, "64") == 0)
+       s390_arch_size = 64;
+
       else
        {
          as_bad (_("invalid switch -m%s"), arg);
@@ -382,15 +388,9 @@ md_parse_option (c, arg)
 
     case 'A':
       if (arg != NULL && strcmp (arg, "esa") == 0)
-       {
          current_architecture = S390_OPCODE_ESA;
-         s390_arch_size = 32;
-       }
       else if (arg != NULL && strcmp (arg, "esame") == 0)
-       {
          current_architecture = S390_OPCODE_ESAME;
-         s390_arch_size = 64;
-       }
       else
        as_bad ("invalid architecture -A%s", arg);
       current_arch_mask = 1 << current_architecture;
@@ -422,7 +422,9 @@ md_show_usage (stream)
         S390 options:\n\
         -mregnames        Allow symbolic names for registers\n\
         -mwarn-areg-zero  Warn about zero base/index registers\n\
-        -mno-regnames     Do not allow symbolic names for registers\n"));
+        -mno-regnames     Do not allow symbolic names for registers\n\
+        -m31              Set file format to 31 bit format\n\
+        -m64              Set file format to 64 bit format\n"));
   fprintf (stream, _("\
         -V                print assembler version number\n\
         -Qy, -Qn          ignored\n"));
@@ -440,6 +442,10 @@ md_begin ()
   boolean dup_insn = false;
   const char *retval;
 
+  /* Give a warning if the combination -m64-bit and -Aesa is used.  */
+  if (s390_arch_size == 64 && current_arch_mask == (1 << S390_OPCODE_ESA))
+    as_warn ("The 64 bit file format is used without esame instructions.");
+
   /* Set the ELF flags if desired.  */
   if (s390_flags)
     bfd_set_private_flags (stdoutput, s390_flags);
@@ -487,9 +493,9 @@ void
 s390_md_end ()
 {
   if (s390_arch_size == 64)
-    bfd_set_arch_mach (stdoutput, bfd_arch_s390, bfd_mach_s390_esame);
+    bfd_set_arch_mach (stdoutput, bfd_arch_s390, bfd_mach_s390_64);
   else
-    bfd_set_arch_mach (stdoutput, bfd_arch_s390, bfd_mach_s390_esa);
+    bfd_set_arch_mach (stdoutput, bfd_arch_s390, bfd_mach_s390_31);
 }
 
 void