* config/tc-mn10300.c (other_registers): Added `epsw'. Mark `pc'
authorAlexandre Oliva <aoliva@redhat.com>
Tue, 12 Feb 2002 07:41:35 +0000 (07:41 +0000)
committerAlexandre Oliva <aoliva@redhat.com>
Tue, 12 Feb 2002 07:41:35 +0000 (07:41 +0000)
and `epsw' as available on AM33 and above only.
(other_register_name): Add logic to handle machine type encoded in
reg_number.

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

index b88e4922931378df67f1a4991dfc3bf6b1f4f21e..8771246e9e684b9b38440f0d4cdc38f945088646 100644 (file)
@@ -1,3 +1,10 @@
+2002-02-12  Alexandre Oliva  <aoliva@redhat.com>
+
+       * config/tc-mn10300.c (other_registers): Added `epsw'.  Mark `pc'
+       and `epsw' as available on AM33 and above only.
+       (other_register_name): Add logic to handle machine type encoded in
+       reg_number.
+
 2002-02-11  Tom Rix  <trix@redhat.com>
 
        * config/tc-ppc.c (md_apply_fix3): Check for insert fop invalid for 
index 28290e601fd4774739bf7d95d528f9c7a2a72206..101ff4416c448c21888a7b3eb0b8b1fbf6ae9e8a 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-mn10300.c -- Assembler code for the Matsushita 10300
-   Copyright 1996, 1997, 1998, 1999, 2000, 2001
+   Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002
    Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
@@ -234,10 +234,16 @@ static const struct reg_name xr_registers[] =
 #define XR_REG_NAME_CNT                                        \
   (sizeof (xr_registers) / sizeof (struct reg_name))
 
+/* We abuse the `value' field, that would be otherwise unused, to
+   encode the architecture on which (access to) the register was
+   introduced.  FIXME: we should probably warn when we encounter a
+   register name when assembling for an architecture that doesn't
+   support it, before parsing it as a symbol name.  */
 static const struct reg_name other_registers[] =
 {
+  { "epsw", AM33 },
   { "mdr", 0 },
-  { "pc", 0 },
+  { "pc", AM33 },
   { "psw", 0 },
   { "sp", 0 },
 };
@@ -494,10 +500,11 @@ other_register_name (expressionP)
   *input_line_pointer = c;
 
   /* Look to see if it's in the register table.  */
-  if (reg_number >= 0)
+  if (reg_number == 0
+      || (reg_number == AM33 && HAVE_AM33))
     {
       expressionP->X_op = O_register;
-      expressionP->X_add_number = reg_number;
+      expressionP->X_add_number = 0;
 
       /* Make the rest nice.  */
       expressionP->X_add_symbol = NULL;